Webhooks & Integrations Overview

Solidarity Tech supports several ways to connect with external services. This guide explains how data moves in and out of the platform, which tools to use for each scenario, and how to set them up.

Overview

There are four main integration paths:

What you want to doTool to usePlan required
Push data from other apps into Solidarity Tech (no code)Zapier IntegrationStandard
Push data in or pull data out programmaticallyREST APIProfessional
Automatically send supporter data to an external URL when something happensAutomation Webhook ActionStandard
Receive ActBlue donations in real timeActBlue IntegrationStandard

Sending Data Into Solidarity Tech

Zapier (No Code)

The Solidarity Tech Zapier app lets you connect with 5,000+ other apps to automatically create or update people in your database. The primary action is Create or Update Person, which supports contact information, chapter assignments, tags, custom user properties, and donation logging.

Setup:

  1. Go to Settings → Integrations → Zapier in the Solidarity Tech dashboard
  2. Copy your API key (this key is specific to the Zapier integration)
  3. Visit the Solidarity Tech Zapier app and connect using that key

When a Zap runs, the Zapier app calls the Solidarity Tech API on your behalf. People created through Zapier are recorded with source "Zapier" so you can identify and filter by them later.

For the full list of supported fields, see the Zapier Integration documentation.

REST API (For Developers)

The REST API provides full programmatic access to your Solidarity Tech data. It is served at https://api.solidarity.tech/v1/ and supports over 30 resources including people, events, RSVPs, attendance, tasks, agent assignments, texts, emails, custom properties, donation charges, and more.

Setup:

  1. Go to Settings → Integrations → API in the Solidarity Tech dashboard
  2. Click Create API Key, give it a name, and select the organization scope
  3. Include the key in your requests as Authorization: Bearer YOUR_API_KEY

API keys can be scoped to sub-organizations to restrict data access. Full API documentation is available at solidarity.tech/reference.

ActBlue (Donation Webhooks)

ActBlue can push donation data directly into Solidarity Tech in real time via webhooks. Each integration gets a unique webhook URL secured with HTTP Basic Authentication.

Setup:

  1. Go to Settings → Integrations → ActBlue in the Solidarity Tech dashboard
  2. Click Create New Integration and give it a name
  3. Copy the Webhook URL, Username, and Password
  4. In your ActBlue dashboard, go to Integrations → Webhooks → Request a Webhook
  5. Select webhook type ActBlue Default, paste your credentials, and submit

For the full setup guide including historical imports and refund webhooks, see the ActBlue Integration documentation.


Sending Data Out of Solidarity Tech

Automation Webhook Action

The automation webhook action lets you send supporter data to any external URL when a person reaches that step in an automation. This is how you push data out of Solidarity Tech to services like Zapier (via Catch Hook), Google Sheets, CRMs, Slack, or any system that accepts HTTP requests.

How it works:

  1. Create an automation with a trigger (e.g., form submission, RSVP, tag added)
  2. Add a Webhook action step
  3. Enter a URL with Liquid merge tags to pass supporter data
  4. Select GET or POST as the HTTP method

Setup in the dashboard:

Go to Automations, create or edit an automation, and add a Webhook action step. You will see two fields: a URL input and a method dropdown (GET or POST).

Passing Data via URL Parameters

All data is passed in the URL as query parameters using Liquid merge tags. When the webhook fires, the merge tags are replaced with the actual supporter's data, and special characters are automatically URL-encoded.

Example URL:

https://hooks.zapier.com/hooks/catch/12345/abcdef/?email={{ user.email }}&first_name={{ user.first-name }}&last_name={{ user.last-name }}&phone={{ user.phone-number }}

When this fires for a supporter named Jane Doe with email [email protected], it becomes:

https://hooks.zapier.com/hooks/catch/12345/abcdef/?email=jane%40example.com&first_name=Jane&last_name=Doe&phone=15551234567

Available Merge Tags

You can include any supporter, organization, or chapter field in the URL using Liquid merge tags like {{ user.email }}, {{ user.first-name }}, {{ chapter.name }}, etc. Custom user properties are also available using the property's internal name with hyphens (e.g., {{ user.volunteer-status }}).

For the complete list of available variables, see the Webhook action reference.

Limitations

  • All data is in the URL. The webhook does not send a JSON request body. Both GET and POST requests pass data exclusively through URL query parameters.
  • No custom headers. You cannot add authentication headers or other custom HTTP headers. If the receiving service requires an API key, include it as a query parameter in the URL (e.g., ?api_key=YOUR_KEY).
  • URL length. Because all data goes in the URL, very long URLs with many parameters may hit length limits on the receiving server.

Error Handling

If the receiving server is unavailable or returns a server error, the system retries once after 1 second. Webhook failures are not currently visible in the dashboard, so if you suspect a webhook is not firing, check the receiving service's logs for incoming requests.


Common Patterns

Send New Signups to Zapier

Combine an automation trigger with the webhook action to push data to a Zapier Catch Hook:

  1. Create an automation triggered by Form Submission
  2. Add a Webhook action step
  3. Set the URL to your Zapier Catch Hook URL with merge tags for the fields you need
  4. In Zapier, use the Webhooks by Zapier trigger (Catch Hook) to receive the data
  5. Add any Zapier actions you want (e.g., add a row to Google Sheets, create a HubSpot contact)

Sync Donations from External Platforms

Use Zapier to automatically import donations from platforms like PayPal, WePay, or Square:

  1. Go to Settings → Integrations → Zapier and copy your API key
  2. In Zapier, create a new Zap with your payment platform as the trigger
  3. Set the action to Solidarity Tech → Create or Update Person
  4. Map the payment platform's fields to Solidarity Tech fields, including the donation_charge__amount, donation_charge__external_donation_date, and donation_charge__external_donation_source fields

Build a Custom Integration with the API

For developers who need full control:

  1. Go to Settings → Integrations → API and create an API key
  2. Use POST /v1/users to create or update people (the endpoint automatically deduplicates by phone number first, then email)
  3. Use GET /v1/users to pull people out, with pagination and filtering support
  4. See the full API reference for all available endpoints

Zapier vs. API vs. Automation Webhook

ZapierREST APIAutomation Webhook
DirectionInto Solidarity TechBoth directionsOut of Solidarity Tech
Requires codingNoYesNo
TriggerExternal event (in connected app)Your code calls the APIAutomation trigger (form submission, RSVP, tag added, etc.)
Data formatZapier maps fields in their UIJSON over HTTPLiquid merge tags in URL query parameters
Plan requiredStandardProfessionalStandard (requires Automations feature)
Use whenYou want to push data in from another app without writing codeYou need full programmatic access or are building a custom integrationYou want to notify an external service when something happens in Solidarity Tech