The calls, in order
| # | Call | Purpose |
|---|---|---|
| 1 | GET /api/v1/signal-types | Pick the type, read configParameters and pricingModel |
| 2 | GET /api/v1/personas, GET /api/v1/signals/industries | Allowed filter values |
| 3 | POST /api/v1/signals/job-changes | Create the signal as a draft |
| 4 | PUT /api/v1/integrations/lemlist | Connect lemlist (once per account) |
| 5 | GET /api/v1/integrations/lemlist/campaigns | Find the campaignId |
| 6 | PATCH /api/v1/signals/{signal_id} | Route to the campaign |
| 7 | PATCH /api/v1/signals/{signal_id} | Set to active |
Steps 4 and 5 are not repeated for each signal: once lemlist is connected, every new signal only needs steps 3, 6 and 7.
The variables lemlist receives
Each lead enters the campaign with its variables: firstName, lastName, email, companyName, title, linkedinUrl, companyWebsite, signalName, matchedPersona. Use them in your messages, for example “Congratulations on joining {{companyName}}”.
Troubleshooting
422on create: aconfigfield does not exist for this type. The message names it; the exact list is inconfigParametersofGET /api/v1/signal-types.- No lead in lemlist: the campaign needs at least one step, and a lead without an email cannot enter an email sequence.
- Quiet signal:
GET /api/v1/signals/{signal_id}/funnelshows how many candidates each filter removed.