When someone gives you their email in a DM, Ellipsend can create the contact in ActiveCampaign and subscribe them to a list a second later. It takes two requests. New to API requests? Start with Send Contact Info to Your Other Tools With API Requests.
Get Your API URL and Key
In ActiveCampaign, click the gear icon for Settings, then Developer. Copy both the API URL and the Key. The URL is unique to your account and looks like https://youraccount.api-us1.com.
Connect ActiveCampaign to Ellipsend
In Ellipsend, go to Settings → Integrations → HTTP requests and click Add request. Name it Find ActiveCampaign lists, pick Read · GET, and paste your API URL followed by /api/3/lists, for example https://youraccount.api-us1.com/api/3/lists.
Open Connection and click Add connection:
Connection name: ActiveCampaign
Connection method: API key
Key name from your app:
Api-TokenWhere should the key go?: In a header
Paste your key, and put your API URL under App addresses.
Save it, open Testing and click Send test request. The response lists every list with its id. Copy the ID of the list you want.
Create the Two Requests
Add contact to ActiveCampaign creates the contact, or updates it if the email already exists:
Destination: Create · POST, your API URL followed by
/api/3/contact/syncConnection: ActiveCampaign
Data to send: click Edit as JSON and paste
{"contact": {"email": "{{ contact.email }}", "firstName": "{{ contact.first_name }}"}}
The parts in double curly braces, like {{ contact.email }}, are variables. When the request runs, Ellipsend swaps each one for that contact's real details, so paste them exactly as they are. To add a different detail, click inside the box where it should go, click Insert variable just above the box, and pick it from the list. More on variables.
Subscribe to ActiveCampaign list puts that contact on your list:
Destination: Create · POST, your API URL followed by
/api/3/contactListsConnection: ActiveCampaign
Data to send: click Edit as JSON and paste this, with your list ID in place of the placeholder
{"contactList": {"list": "YOUR_LIST_ID", "contact": "{{ steps.ac.contact.id }}", "status": 1}}
The second request uses the contact ID ActiveCampaign sends back from the first one. That's why the first step's result needs the name ac in your automation.
Sending to More Than One List?
One request sends to one list. Most people put every DM lead in the same list, so one request is all they need. If some automations should land contacts in a different list, save one request per list. Open Subscribe to ActiveCampaign list, click More, then Duplicate request. Rename the copy after the list, like Subscribe to ActiveCampaign list · Meal Plan, swap in that list's ID, and save.
Then pick the matching request in each automation. Add contact to ActiveCampaign stays the same for all of them. Your connection is shared, so you only enter your key once.
Add Them to Your Automation
In your automation's DM steps, add Ask for Email, then Run API Request with Add contact to ActiveCampaign. Type ac under Name this result. Then add a second Run API Request with Subscribe to ActiveCampaign list, then your freebie message. Each step waits for the one before it to succeed.
Good to Know
Status
1means subscribed, and it starts any automations that trigger on that list.Double opt-in follows your list's own settings in ActiveCampaign.
{{ contact.first_name }}is the first name on the contact's Instagram or Facebook profile, not an answer they typed.Check the Activity tab if someone doesn't show up. It shows what was sent and ActiveCampaign's reply for every run.


