ConvertKit (now Kit) is an email marketing platform built for creators. Connecting InstantDM to ConvertKit automatically adds Instagram DM leads to your email list - so when someone comments a keyword and shares their email through your DM flow, they're subscribed to your newsletter or sequence without any manual work.
Why Connect InstantDM to ConvertKit?
- Auto-subscribe leads - Instagram DM leads join your email list instantly
- Tag subscribers - tag leads based on which flow or keyword they came from
- Trigger sequences - automatically start an email sequence when a lead is captured
- Add to forms - associate leads with specific ConvertKit forms for tracking
- Creator-focused - ConvertKit is built for the same audience that uses Instagram DM automation
Common Use Cases
- Subscribe someone to your newsletter when they comment "GUIDE" and share their email
- Tag subscribers based on their interest (captured in the DM flow)
- Start a welcome email sequence after a DM lead capture
- Add leads to different forms based on which Instagram post they came from
- Segment your email list by Instagram campaign
What You'll Need
| Requirement | Details |
|---|---|
| InstantDM account | Trendsetter, Trendsetter Pro, or any Multi plan |
| ConvertKit account | Free or paid plan |
| InstantDM API key | Found at Settings → API in your InstantDM dashboard |
| ConvertKit API key | Found at Settings → Advanced → API in ConvertKit |
| Automation platform (optional) | Make.com or Zapier for no-code setup |
Method 1: Via Make.com (Recommended)
Step 1: Set Up the Webhook
Follow Steps 1-4 in the Make.com integration guide to create a webhook scenario.
Step 2: Add a ConvertKit Module
- After the webhook trigger, add a Filter:
eventequalsflow_completed. - Click "+" and search for ConvertKit.
- Select Add Subscriber to a Form.
- Connect your ConvertKit account.
Step 3: Map Fields
| ConvertKit Field | Make.com Mapping |
|---|---|
| Form | Select the form to subscribe to |
{{data.response_variables.email}} | |
| First Name | {{data.response_variables.full_name}} |
Step 4: Add Tags (Optional)
- After the subscriber module, add ConvertKit → Tag a Subscriber.
- Select or create a tag like
instagram-leador{{data.flow_name}}.
Step 5: Test and Activate
- Run once in Make.com.
- Trigger a test event from InstantDM.
- Check ConvertKit - the subscriber should appear with the correct tag.
- Activate the scenario.
Method 2: Via Zapier
Step 1: Create the Zap
Follow the Zapier integration guide to set up a webhook trigger.
Step 2: Add ConvertKit Action
- Add a Filter:
eventexactly matchesflow_completed. - Add ConvertKit → Add Subscriber to a Form.
- Connect your ConvertKit account.
- Select the form and map email + first name.
- Optionally add a second action: ConvertKit → Tag a Subscriber.
Step 3: Test and Activate
- Test with sample data.
- Verify in ConvertKit.
- Turn the Zap on.
Method 3: Direct API Integration
ConvertKit's API is simple and well-documented.
Step 1: Get Your API Key and Secret
- In ConvertKit, go to Settings → Advanced → API.
- Copy your API Key and API Secret.
- Find your Form ID - go to your form's landing page URL, the ID is in the URL (e.g.,
/forms/1234567).
Step 2: Build a Webhook Receiver
const express = require('express');
const app = express();
app.use(express.json());
const CK_API_SECRET = process.env.CONVERTKIT_API_SECRET;
const FORM_ID = '1234567'; // Your ConvertKit form ID
app.post('/instantdm-webhook', async (req, res) => {
const { event, data } = req.body;
if (event !== 'flow_completed' || !data.response_variables?.email) {
return res.status(200).json({ status: 'skipped' });
}
try {
// Subscribe to form
const response = await fetch(
`https://api.convertkit.com/v3/forms/${FORM_ID}/subscribe`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
api_secret: CK_API_SECRET,
email: data.response_variables.email,
first_name: data.response_variables.full_name || '',
fields: {
instagram_username: data.username,
interest: data.response_variables.interest || '',
},
tags: ['instagram-lead'],
}),
}
);
const result = await response.json();
res.status(200).json({ status: 'subscribed', subscriber: result.subscription });
} catch (error) {
res.status(500).json({ status: 'error', message: error.message });
}
});
app.listen(3000);
Tagging Strategies
Tags help you segment your email list based on how leads came in.
| Tag | When to Apply |
|---|---|
instagram-lead | Every lead from InstantDM |
flow-name-{name} | Based on which DM flow they completed |
interest-{topic} | Based on their stated interest |
campaign-{post} | Based on which Instagram post triggered the flow |
high-intent | If they answered qualifying questions positively |
Dynamic Tagging in Make.com
Use a Router after the subscriber module to apply different tags based on flow data:
- Branch 1: If
data.flow_namecontains "pricing" → taghigh-intent - Branch 2: If
data.flow_namecontains "freebie" → tagfreebie-seeker - Branch 3: Default → tag
instagram-lead
Triggering Email Sequences
In ConvertKit
- Create a Visual Automation in ConvertKit.
- Set the trigger to: Subscribes to a form (the form you're using) or Is tagged with
instagram-lead. - Add your email sequence as the next step.
- The sequence starts automatically when InstantDM adds the subscriber.
Example Sequence
- Immediately: Welcome email with the promised content (PDF, link, etc.)
- Day 1: Follow-up with additional value
- Day 3: Case study or testimonial
- Day 5: Offer or CTA
Custom Fields
ConvertKit supports custom fields for storing additional data.
Creating Custom Fields
- Go to Subscribers → Custom Fields.
- Add fields like
instagram_username,interest,flow_name.
Mapping Custom Fields
In the API, pass custom fields in the fields object:
{
"api_secret": "YOUR_SECRET",
"email": "john@example.com",
"fields": {
"instagram_username": "johndoe",
"interest": "Premium Plan",
"flow_name": "Lead Capture Flow"
}
}
In Make.com/Zapier, custom fields appear in the field mapping after connecting your account.
Troubleshooting
| Issue | Solution |
|---|---|
| Subscriber not appearing | Check that the email is valid. ConvertKit rejects obviously invalid emails. Verify the form ID is correct. |
| Tag not applied | Ensure the tag exists in ConvertKit before applying it. Create it manually first, or use the API to create it. |
| Duplicate subscribers | ConvertKit handles duplicates automatically - subscribing an existing email updates the record instead of creating a duplicate. |
| API returning 401 | Verify your API Secret (not API Key) is correct. The subscribe endpoint uses the API Secret. |
| Custom fields empty | Field names must match exactly (case-sensitive, underscores). Create the fields in ConvertKit first. |
| Sequence not starting | Check that the Visual Automation is active and the trigger matches (form subscription or tag). |
Frequently Asked Questions
Does ConvertKit handle duplicate emails?
Yes. If someone is already subscribed and the same email comes through again, ConvertKit updates the existing subscriber (adds new tags, updates fields) instead of creating a duplicate.
Can I subscribe leads to multiple forms?
Yes. Each form can trigger a different automation in ConvertKit. Use a Router in Make.com to subscribe to different forms based on the flow name or interest.
What happens if the lead doesn't provide an email?
The integration skips the event. Email is required for ConvertKit - if your DM flow doesn't capture an email, the subscriber won't be created. Make sure your lead capture flow includes an email question.
Can I unsubscribe someone via the API?
Yes. Use ConvertKit's DELETE /v3/subscribers/{id} endpoint. You could trigger this from InstantDM if a user sends a specific keyword like "UNSUBSCRIBE".
What's Next
- Set up Mailchimp if you use Mailchimp for email marketing.
- Connect to ActiveCampaign for advanced email automation.
- Read the Make.com guide for more automation scenarios.
- Build a Custom AI Agent to qualify leads before subscribing them.
- Explore the full API docs at instantdm.com/instagram-api-docs.