Skip to main content

ArcSite & ServiceMinder

Connect ArcSite to ServiceMinder to push proposals, costs, and PDFs into ServiceMinder automatically, without re-entering data by hand

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 "materials" somewhere in its Category name

Total cost of every material product on the drawing

Labor line

The line's Part has "Labor" as its Category name

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, and Markup (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

  1. Sign in to ArcSite for Web with an admin account.

  2. Go to Settings > Integrations > Apps.

  3. Find the ServiceMinder card and select Connect.

  4. Paste in the API Key you generated in ServiceMinder.

  5. 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.

  1. Once connected, a Settings area appears below the ServiceMinder card.

  2. Select the gear icon to open it.

  3. Check the ArcSite product categories that represent labor cost.

  4. 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

  1. Open a Contact in ServiceMinder.

  2. Create an Appointment for that Contact and enter the Schedule flow.

  3. Choose Estimate as the type.

  4. 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

Authorization=Bearer <ArcSite API Token>

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

owner

Required

Project Owner, an ArcSite user email. That user must exist in this company (or the same group), otherwise creation fails.

name

Required

Project name

customer

Optional

Customer details (name, email, phone, address), written into the Project's Client Profile

sales_rep

Optional

The Project's Sales Rep

work_site_address

Optional

Work site address

job_number

Optional

Job number

custom_fields.serviceminder_appointment_id

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.

custom_fields.serviceminder_appointment_agent_email

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 custom_fields.*

N/A

Silently ignored. ArcSite only recognizes the two ServiceMinder fields above (plus ServiceTitan's servicetitan_job_id). Extra fields raise no error and are not stored.

💡 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 owner matches no ArcSite user

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.

  1. Create a Drawing under the Project.

  2. Finish the design.

  3. 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

  1. In the ArcSite app on iPad, export the Proposal PDF from the drawing.

  2. When the export finishes, a dialog asks whether to push to ServiceMinder.

  3. 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.

  4. 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:

  1. The new Proposal exists, with the Service you picked.

  2. The Materials, Labor, and Markup amounts match expectations.

  3. Customer Notes came across.

  4. 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.

Did this answer your question?