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 do | Tool to use | Plan required |
|---|---|---|
| Push data from other apps into Solidarity Tech (no code) | Zapier Integration | Standard |
| Push data in or pull data out programmatically | REST API | Professional |
| Automatically send supporter data to an external URL when something happens | Automation Webhook Action | Standard |
| Receive ActBlue donations in real time | ActBlue Integration | Standard |
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:
- Go to Settings → Integrations → Zapier in the Solidarity Tech dashboard
- Copy your API key (this key is specific to the Zapier integration)
- 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:
- Go to Settings → Integrations → API in the Solidarity Tech dashboard
- Click Create API Key, give it a name, and select the organization scope
- 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:
- Go to Settings → Integrations → ActBlue in the Solidarity Tech dashboard
- Click Create New Integration and give it a name
- Copy the Webhook URL, Username, and Password
- In your ActBlue dashboard, go to Integrations → Webhooks → Request a Webhook
- 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:
- Create an automation with a trigger (e.g., form submission, RSVP, tag added)
- Add a Webhook action step
- Enter a URL with Liquid merge tags to pass supporter data
- 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:
- Create an automation triggered by Form Submission
- Add a Webhook action step
- Set the URL to your Zapier Catch Hook URL with merge tags for the fields you need
- In Zapier, use the Webhooks by Zapier trigger (Catch Hook) to receive the data
- 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:
- Go to Settings → Integrations → Zapier and copy your API key
- In Zapier, create a new Zap with your payment platform as the trigger
- Set the action to Solidarity Tech → Create or Update Person
- Map the payment platform's fields to Solidarity Tech fields, including the
donation_charge__amount,donation_charge__external_donation_date, anddonation_charge__external_donation_sourcefields
Build a Custom Integration with the API
For developers who need full control:
- Go to Settings → Integrations → API and create an API key
- Use
POST /v1/usersto create or update people (the endpoint automatically deduplicates by phone number first, then email) - Use
GET /v1/usersto pull people out, with pagination and filtering support - See the full API reference for all available endpoints
Zapier vs. API vs. Automation Webhook
| Zapier | REST API | Automation Webhook | |
|---|---|---|---|
| Direction | Into Solidarity Tech | Both directions | Out of Solidarity Tech |
| Requires coding | No | Yes | No |
| Trigger | External event (in connected app) | Your code calls the API | Automation trigger (form submission, RSVP, tag added, etc.) |
| Data format | Zapier maps fields in their UI | JSON over HTTP | Liquid merge tags in URL query parameters |
| Plan required | Standard | Professional | Standard (requires Automations feature) |
| Use when | You want to push data in from another app without writing code | You need full programmatic access or are building a custom integration | You want to notify an external service when something happens in Solidarity Tech |
Updated about 17 hours ago
