ArcSite + ServiceMinder Integration Overview
Connect ArcSite to ServiceMinder to push a completed proposal, its cost breakdown, and its PDFs directly into a ServiceMinder Proposal without re-entering data by hand. This article walks through the ServiceMinder integration in the order you will use it: connecting the two systems, creating a project from a ServiceMinder Appointment, finishing the drawing, and pushing the proposal.
Platform Availability
iOS | Android | Windows | Web |
✅ Available | ✅ Available | ✅ Available | ✅ Available |
Availability
Different parts of the ServiceMinder integration are available on different platforms. The table below breaks down where each part works.
Task | Where it's available |
Connecting ServiceMinder (Step 1) | ArcSite for Web only. There is no integration settings page in the ArcSite app. |
Pushing a proposal to ServiceMinder (Step 4) | ArcSite app on iPad only. Not available on Android, Windows, iPhone, or ArcSite for Web. |
Subscription Requirement: Estimate Plan
Before You Start
The ServiceMinder integration needs a few things in place before you connect it. The table below covers what you need and where to find it.
What you need | Where | Notes |
An ArcSite Estimate tier subscription | ArcSite | The ServiceMinder integration requires the Estimate tier. |
ServiceMinder API Key (a code generated in ServiceMinder that lets ArcSite connect to your account) | ServiceMinder | Generate it under Settings > API Keys. |
A Service with an active Proposal Template | ServiceMinder | Must be set up first, or the push will fail. See "What the Proposal Template Must Contain" below. |
An ArcSite admin account, on ArcSite for Web | ArcSite | Admin rights are required to connect the integration. Connecting is only available on ArcSite for Web, not in the app. |
ArcSite product categories sorted into Labor vs. Materials | ArcSite | You will choose which categories count as Labor in Settings after connecting. |
An iPad running the ArcSite app | ArcSite | Pushing a proposal to ServiceMinder only works from the ArcSite app on iPad. See Step 4. |
What the Proposal Template Must Contain
Every ServiceMinder Service that will receive a push from ArcSite needs an active Proposal Template with three specific kinds of lines. The table below explains each one.
Template line | Requirement | What the push fills in |
Materials line | The line's Part has " | Total cost of every material product on the drawing |
Labor line | The line's Part has " | Total cost of every labor product on the drawing |
Markup line | The line's quantity is set to percent form, holding a negative percentage (for example, -67 means 67%) | An amount calculated as (Materials + Labor) multiplied by that percentage |
Other lines | Optional | Pushed in the template's original order with an amount of 0, for manual entry in ServiceMinder |
Important: The Markup line's quantity must be set to percent form. If it is left as a regular quantity, ArcSite treats it as an "other line" and pushes it as 0, and the push does not report an error. If a Markup amount shows as 0 in ServiceMinder, check this setting on the template first.
A few additional notes to be aware of:
The Markup percentage lives only on the ServiceMinder Template. There is no percentage to configure on the ArcSite side.
Customer Notes filled in on the template are written into the Proposal the first time it is pushed.
A line whose Part name contains "
discount" is never treated as Materials or Labor.Example: the Service "
Vinyl Fence Installation" might use a template called "Standard Vinyl" with three lines:Materials Retail,Labor Retail, andMarkup(67%).
Step 1: Connect ServiceMinder in ArcSite
Connecting ServiceMinder to ArcSite starts with submitting your ServiceMinder API Key from an admin account, on ArcSite for Web.
Note: Connecting ServiceMinder is only available on ArcSite for Web. There is no integration settings page in the ArcSite app.
Submit the API Key
Sign in to ArcSite for Web with an admin account.
Go to Settings > Integrations > Apps.
Find the ServiceMinder card and select Connect.
Paste in the API Key you generated in ServiceMinder.
Select Confirm.
ArcSite validates the key against ServiceMinder immediately. If the key is invalid, or ArcSite cannot reach any ServiceMinder Organization with it, the connection is rejected with an error message and nothing is saved.
Note: One ArcSite company connects to exactly one ServiceMinder Organization. This is a one-to-one relationship.
Configure the Labor Categories
After ServiceMinder is connected, configure which ArcSite product categories count as labor cost.
Once connected, a Settings area appears below the ServiceMinder card.
Select the gear icon to open it.
Check the ArcSite product categories that represent labor cost.
Save your changes.
The selected category names appear on the card, separated by semicolons, after saving.
⚠️ Important: Do not skip this step. If no category is checked, the push still succeeds, but every product cost on the drawing lands in the Materials line, and the Labor line comes out as 0.
Update the API Key or Disconnect
You can update the ServiceMinder API Key or disconnect the integration at any time from the same card, on ArcSite for Web.
To update the API Key: select Update API Key on the card. The input field is empty. The current key is neither shown nor masked, so paste the new key in full. The Update button stays disabled until the field has a value.
To disconnect: select Disconnect in the bottom-left corner of the same dialog. Disconnecting stops the integration, but keeps the drawing-to-Proposal links from proposals already pushed. Reconnecting resumes updating those original Proposals.
Step 2: Trigger Project Creation from ServiceMinder
Projects created through the ServiceMinder integration are not created by hand in ArcSite. A Trigger set up on the ServiceMinder side creates them automatically.
Create the Project
Open a Contact in ServiceMinder.
Create an Appointment for that Contact and enter the Schedule flow.
Choose Estimate as the type.
Confirm the Schedule.
Confirming the schedule fires the Trigger, which calls the ArcSite API to create the Project. The new Project appears in your ArcSite project list shortly after.
Set Up the Trigger
Create a JSON POST Trigger in ServiceMinder with this configuration:
Setting | Value |
Type | JSON POST |
URL | |
Headers |
|
How to get a Token: To get a Token, go to https://dev.arcsite.com/, select Get an API Token to open the ArcSite admin console, and create one under Developers > API tokens.
🔑 Important: A Token represents the company that created it. Projects are created under that company, so confirm you are using the correct company's Token. Never put a real Token in a document or a support ticket. If a Token leaks, generate a new one on the same page and delete the old one.
The Payload below uses ServiceMinder's own template variables (the values in curly braces), which ServiceMinder substitutes automatically when the Trigger fires:
`{`
`"owner": "your-arcsite-user@example.com",`
`"job_number": "{appointment.job_number}",`
`"name": "Appointment #{appointment.id} - {contact.city} - {contact.first_name} {contact.last_name}",`
`"customer": {`
`"name": "{contact.first_name} {contact.last_name}",`
`"email": "{contact.email}",`
`"phone": "{contact.phone}",`
`"second_phone": "{contact.altphone}",`
`"address": {`
`"street": "{contact.address1}",`
`"city": "{contact.city}",`
`"state": "{contact.state}",`
`"zip_code": "{contact.zip}"`
`}`
`},`
`"sales_rep": {`
`"name": "{service_agent.name}",`
`"email": "{service_agent.email}",`
`"phone": "{service_agent.phone}"`
`},`
`"custom_fields": {`
`"serviceminder_appointment_id": "{appointment.id}",`
`"serviceminder_appointment_agent_email": "{service_agent.email}"`
`}`
`}`⚠️ Important: Two details are easy to get wrong when setting up this Trigger.
First, owner is not a template variable. It must be a literal ArcSite user email, and that user must belong to the Token's company or the same group. Every Project created by this Trigger lands under the same owner. To assign Projects to different people, create one Trigger per person in ServiceMinder.
Second, do not leave sales_rep.email empty. It also determines who owns the Proposal at push time (see "What Gets Pushed" under Step 4). If it is empty, only the pushing user's email can be matched, and if that fails, the Proposal falls to the user who owns the API Key.
The Payload fields determine what the created Project looks like:
Payload field | Required | What it determines |
| Required | Project Owner, an ArcSite user email. That user must exist in this company (or the same group), otherwise creation fails. |
| Required | Project name |
| Optional | Customer details (name, email, phone, address), written into the Project's Client Profile |
| Optional | The Project's Sales Rep |
| Optional | Work site address |
| Optional | Job number |
| Required | The ServiceMinder Appointment to link to. This is the anchor of the whole integration. Every later push uses it to locate the customer in ServiceMinder. |
| Optional | Email of the Service Agent (Sales Rep) on the Appointment. When set, that person is added to the Project as a collaborator. |
Any other | N/A | Silently ignored. ArcSite only recognizes the two ServiceMinder fields above (plus ServiceTitan's |
💡 Note: Everything on the Project comes from the Payload. ArcSite does not reach back into ServiceMinder to pull Contact details. The more complete the Payload, the more complete the customer information on the Project.
What Can Go Wrong at This Step
Situation | Result |
ServiceMinder is not connected on the ArcSite side yet | Creation fails. Complete Step 1 first. |
The Appointment in the Payload cannot be found in ServiceMinder (never existed, or was deleted) | Creation fails with an Appointment-not-found message. Use a valid Appointment. |
The Appointment was cancelled but is still retrievable in ServiceMinder | Created as normal. ArcSite only checks whether the Appointment can be found, not whether it was cancelled. |
The same Appointment fires the Trigger twice | Creation fails, reporting that the Appointment already backs another Project. The existing Project is still in your ArcSite project list. |
The Appointment is already linked to another company | Creation fails, with the same message as the row above. |
The email in | Creation fails with a user-not-found message. |
Step 3: Finish the Drawing in ArcSite
Once the Project exists, finish the drawing in ArcSite the way you normally would.
Create a Drawing under the Project.
Finish the design.
Add products as needed.
Two things determine how amounts are calculated for ServiceMinder:
Amounts pushed to ServiceMinder are always cost, excluding ArcSite's own markup, discounts, and project-level adjustments.
Products are bucketed automatically by category. Anything matching the Labor categories configured in Step 1 goes to Labor. Everything else, including all Custom Items, goes to Materials. There is no per-product mapping to maintain.
Step 4: Export the Proposal and Push to ServiceMinder
Pushing a proposal to ServiceMinder happens as part of exporting the Proposal PDF in the ArcSite app on iPad.
Important: Pushing to ServiceMinder is only available in the ArcSite app on iPad. It is not available on Android, Windows, or ArcSite for Web. If you export a Proposal PDF on another device, no push dialog will appear.
Start a Push
In the ArcSite app on iPad, export the Proposal PDF from the drawing.
When the export finishes, a dialog asks whether to push to ServiceMinder.
If this drawing needs a Service, the same dialog shows a Service picker listing the Services available in ServiceMinder. Pick one to continue. The picker appears on this drawing's first push, or any time its previous Proposal has been deleted on the ServiceMinder side.
Select Confirm to complete the push.
First Push vs. Later Pushes
| First push of this drawing | Pushing the same drawing again |
Service required? | Yes. You cannot continue without picking one. | No. The original Service is reused automatically, unless that Proposal has been deleted on the ServiceMinder side, in which case you are asked to pick again and may switch to a different Service. |
Result in ServiceMinder | A new Proposal is created. | The existing Proposal is updated, not duplicated, unless it has been deleted in ServiceMinder, in which case a new one is created. |
Customer Notes | Copied in from the template. | Left unchanged. |
What Gets Pushed
Materials line: total material cost
Labor line: total labor cost
Markup line: the amount calculated from the template percentage
Other template lines: carried over in their original order with an amount of 0
Proposal Owner: matched first against the email of the ArcSite user performing the push, then the Project's Sales Rep email. If neither matches a ServiceMinder user, the Proposal falls to the user who owns the API Key.
Two PDF attachments: the Drawing PDF (filename carries the version, for example "
My Drawing - v3.pdf") and the Takeoff PDF
Note: The Drawing PDF, not the Proposal PDF you just exported, is what gets attached.
✅ Tip: Lines you add by hand in ServiceMinder are kept on a re-push. ArcSite reads the Proposal's current contents first, overwrites only the Materials and Labor amounts, and carries everything else through untouched. If you adjust the Markup percentage in ServiceMinder, the next push recalculates using your adjusted percentage. One exception: if a line you add by hand uses the same Part as the Materials or Labor line, the next push fails instead of guessing which line to update. See "Why did my push fail?" below for what to do in that case.
Step 5: Verify the Result in ServiceMinder
After a successful push, confirm the result by opening the Proposal list for the matching Contact in ServiceMinder and checking the following:
The new Proposal exists, with the Service you picked.
The Materials, Labor, and Markup amounts match expectations.
Customer Notes came across.
Both attachments are there: the Drawing PDF (filename carries the version) and the Takeoff PDF.
How the Push Behaves in Different Situations
The ServiceMinder integration behaves differently depending on the situation. The tables below cover the most common ones.
Does each drawing create its own Proposal?
What to check | Expected result |
Number of Proposals | Each drawing gets its own independent Proposal. Two drawings means two Proposals. |
Service selection | Each drawing asks for a Service on its own first push, independently of the others. They can use different Services. |
Amounts | Each Proposal reflects only its own drawing. |
Attachments | Each Proposal carries the two PDFs of its own drawing. |
Merged into a multi-option quote automatically? | No. To present several drawings as options to the customer, merge them by hand in ServiceMinder using Actions > Bundle. |
What happens if I push the same drawing again?
What to check | Expected result |
Service required? | No. The Service from the first push is reused, unless that Proposal has been deleted on the ServiceMinder side. |
Number of Proposals | Still just one. No new Proposal is created. |
Materials / Labor amounts | Updated to the drawing's current cost. |
Lines added by hand in ServiceMinder | Preserved. Never overwritten or deleted, unless a hand-added line uses the same Part as the Materials or Labor line, in which case the push fails instead. See "Why did my push fail?" |
Markup percentage adjusted in ServiceMinder | The amount is recalculated using the adjusted percentage. |
Attachments | When the drawing changed (producing a new version), both PDFs are uploaded again for the new version. Re-pushing the same version does not upload them again. |
What happens if I delete the Proposal in ServiceMinder and push again?
What to check | Expected result |
The dialog after exporting | The Service picker appears again, just like a first push. |
Can you switch to a different Service? | Yes. Deleting the Proposal in ServiceMinder and pushing again is the proper way to change a drawing's Service. |
Result in ServiceMinder | A new Proposal is created under the Service picked this time, with the three amounts filled in from that Service's template. |
Attachments | Both PDFs are uploaded again, onto the new Proposal. |
Pushing that drawing later | Back to an ordinary re-push. No Service is requested, and amounts are updated on the new Proposal. |
💡 Note: ArcSite does not restore a deleted Proposal. It creates a fresh one, since deleting a Proposal is usually how a customer switches to a different Service.
Why did my push fail?
Failures are surfaced directly in the app. The table below covers common causes and what to do.
What you see | Cause | What to do |
No template found for the Service | The chosen Service has no active Proposal Template attached | Configure a template for that Service in the ServiceMinder Control Panel |
The template is missing a Materials or Labor line | The template lines do not meet the requirements, or the Part's Category name is wrong | Fix the template lines per "What the Proposal Template Must Contain" above |
No Service picked on the first push | A Service is mandatory on the first push | Export again and pick a Service in the dialog |
A message saying this drawing's Proposal was deleted in ServiceMinder and the link has been cleared | The Proposal created by the previous push was deleted on the ServiceMinder side, and this push carried no newly picked Service (usually because the dialog could not fetch the Service list at the time) | Export the Proposal once more. The dialog shows the Service picker, and picking one creates a new Proposal. No need to contact ArcSite support. |
The Materials or Labor line on the Proposal no longer matches the template | The Proposal was edited in ServiceMinder. The Materials or Labor line was deleted, or swapped for a different Part | Point that line back at the Part from the template in ServiceMinder, or delete the whole Proposal and push a fresh one |
The Proposal has more than one Materials or Labor line | A second line with the same Part was added in ServiceMinder, so there is no single destination for the amount. This includes a hand-added line that happens to reuse the Materials or Labor Part. | Delete the redundant line in ServiceMinder |
ServiceMinder rejected the submission | ServiceMinder's own validation failed (amounts, Parts, permissions) | Act on the information ServiceMinder returned in the message |
Connection failed or API Key invalid | The key was revoked or rotated | Submit the new API Key in ArcSite |
No push entry point or dialog appears | The Project is not linked to a ServiceMinder Appointment via the Trigger, or you are pushing from a device other than iPad | Confirm the Project was created by the Step 2 Trigger, and that you are on the ArcSite app on iPad |
💡 Tip: Attachment upload is the last step of a push. If the Proposal was created but an attachment did not make it, just push again. It fills in the gap without creating a duplicate Proposal.
FAQ
Why didn't a push dialog appear after I exported the PDF?
No push dialog appears if any of the following is true: ServiceMinder is not connected on the ArcSite side, this Project was not created by the ServiceMinder Trigger, or you are exporting from a device other than the ArcSite app on iPad. Pushing to ServiceMinder is only available on iPad. A project created by hand has no link to an Appointment, so no push entry point appears either.
Why is the Labor line showing 0?
The Labor line shows 0 when no Labor categories have been checked in ArcSite Settings, or when this drawing uses no products from those categories. Configure Labor categories under Settings on the ServiceMinder integration card, in ArcSite for Web.
Where do I change the Markup percentage?
Change the Markup percentage on the Proposal Template in ServiceMinder. There is no equivalent setting on the ArcSite side. New pushes use the new percentage. For a Proposal that has already been pushed, adjust the percentage directly on that Proposal in ServiceMinder, and the next re-push keeps your adjusted value.
Why doesn't the pushed amount match the total on the ArcSite proposal?
The pushed amount is cost only, without ArcSite's markup and discounts. The final price is calculated on the ServiceMinder side by the Markup line and its other rules.
The Proposal in ServiceMinder was deleted by mistake. What do I do?
Export the Proposal and push again from the ArcSite app on iPad. ArcSite checks whether that Proposal still exists before pushing. If it is gone, ArcSite shows the Service picker again, lets you choose a Service (a different one is fine), and creates a new Proposal on push, with the drawing's link automatically pointed at the new one. There is no need to contact ArcSite support for this.
Can ArcSite merge several drawings into one multi-option quote automatically?
Not currently. Each drawing pushes as its own Proposal. To present several drawings as options to the customer, merge them by hand in ServiceMinder using Actions > Bundle.
Does the ServiceMinder integration work on my subscription plan?
The ServiceMinder integration requires the Estimate tier.
