How to Create Sub-Accounts in Sparkforge Using Zapier

By Sparkforge Support Team ·Last reviewed May 3, 2026

Grab your Agency API key, build a Zapier flow that POSTs to <code>/v1/locations</code> with a Bearer token, then a second POST to <code>/v1/users/</code> mapping the new Location ID dynamically. Requires the Pro plan and a paid Zapier account (webhooks).

This walkthrough automates sub-account creation in Sparkforge from a Zapier webhook. It is for agencies on the Pro plan that want to provision new locations from external systems without writing a backend.

Prerequisites

  • Sparkforge Pro plan (required for Public API access).
  • A paid Zapier plan (free Zapier does not include webhooks).
  • Your Agency API key.

The native Zapier Add Account action was deprecated on February 21, 2022. This article uses Zapier's Webhooks > Custom Request to call the Sparkforge API directly. Sparkforge support does not service custom Zapier integrations — join the Developer Council Slack for help.

1. Get Your Agency API Key

  1. Open Agency View > Settings > API Keys.
  2. Click to copy the existing key, or click + Create New if none exists.
  3. Save the key for steps 3 and 5.

2. Build the Trigger in Zapier

Pick what kicks off the Zap. You can use a Sparkforge action (pipeline change, opportunity update, etc.) or a generic Zapier Capture Webhook. The example below uses Capture Webhook.

  1. In Zapier, choose Webhooks > Catch Hook. Copy the webhook URL Zapier gives you.
  2. In Sparkforge, build a workflow with an order form named Account Creation Form, then add a Webhook action pointed at the Zapier URL.
  3. Submit the form at least once with dummy data so Zapier captures sample fields.

3. POST to Create the Location

  1. Add a new step in Zapier: Webhooks > Custom Request, action event POST.
  2. Endpoint URL: https://rest.sparkforge.com/v1/locations.
  3. Leave Data Pass-Through empty.
  4. Map the JSON body to the form data:
{
    "businessName": "{{Insert__company_name}}",
    "address": "3500 Deer Creek Road",
    "city": "Palo Alto",
    "country": "US",
    "state": "CA",
    "postalCode": "94304",
    "website": "https://www.tesla.com",
    "timezone": "US/Central",
    "firstName": "{{Insert __first_name}}",
    "lastName": "{{Insert  __last_name}}",
    "email": "{{Insert __email}}",
    "phone": "{{Insert __Phone}}",
    "settings": {
        "allowDuplicateContact": false,
        "allowDuplicateOpportunity": false,
        "allowFacebookNameMerge": false,
        "disableContactTimezone": false
    },
    "snapshot": {
        "id": "NLCFWNuvs9DLwMsYku3H",
        "type": "vertical"
    }
}

Snapshot types:

  • own — a snapshot you created.
  • imported — another agency's snapshot you imported.
  • vertical — a native Sparkforge snapshot.

Leave Basic Authorization blank. Add two headers:

  • Authorization: Bearer YOUR_AGENCY_API_KEY
  • Content-Type: application/json

Run the test. The response includes the new Location ID. Do not copy and paste this ID into the next step — map it from the dropdown so each future run picks up the dynamically generated ID.

4. POST to Create the User

  1. Add another step: Webhooks > Custom Request, action event POST.
  2. Endpoint URL: https://rest.sparkforge.com/v1/users/.
  3. Map the data, including the locationIds array using the dynamically mapped Location ID from step 3.
{
    "firstName": "Zapier",
    "lastName": "Test",
    "email": "test@testing.com",
    "password": "",
    "type": "account",
    "role": "admin",
    "locationIds": ["{{mapped_location_id}}"],
    "permissions": {
        "contactsEnabled": true,
        "workflowsEnabled": true,
        "appointmentsEnabled": true,
        "conversationsEnabled": true,
        "settingsEnabled": true
    }
}

Leave the password field empty to auto-generate one. If you set it manually, use 8+ characters with special symbols.

Add the same two headers (Authorization: Bearer ... and Content-Type: application/json) and run the test.

Troubleshooting

Q1: I do not get a password, location, or API key in the POST results

The system generates one unique password per email/phone combination. Use unique data on every test run.

Q2: My Sparkforge workflow webhook is not firing

Make sure the workflow is published and live. Recreate the contact with new email/phone data — you can append +1, +2, etc. to your email (Gmail and most providers route them all to the same inbox while treating them as unique addresses).

General API Debugging

Use Webhook.site to inspect what is actually being sent. If the integration fails, capture the Webhook.site payload before opening a support ticket — Sparkforge engineering needs the raw request data to isolate the issue.

Frequently Asked Questions

Do I need the Pro plan to create sub-accounts via API?
Yes. Public API access is gated to the Pro plan.
Can I do this on a free Zapier account?
No. Webhooks are a Zapier paid feature. You need a paid Zapier plan for Catch Hook and Custom Request actions.
Where do I find my Agency API key?
Agency View &gt; Settings &gt; API Keys. Copy the existing key or click +Create New if none exists.
What is the location creation endpoint?
POST <code>https://rest.sparkforge.com/v1/locations</code> with a Bearer token in the Authorization header.
Why should I not paste the Location ID into step 5?
Pasting hardcodes that ID forever, so every future run provisions users into the same location. Map it from the previous step's response so it updates dynamically.

Was this article helpful?