Skip to content

Commit 177543a

Browse files
committed
feat(smartlead): add Smartlead integration
Adds a Smartlead block with 22 tools covering campaigns, sequences, leads, analytics, and webhooks. Every request path, parameter, enum, and response mapping was verified against the live Smartlead API rather than its documentation, which proved unreliable: - `POST /campaigns/new` (documented) 404s; the real path is `/campaigns/create` - `GET /campaigns/{id}` and `/sequences` return bare payloads, not the documented `{success, data}` envelopes - `/statistics` returns paginated per-email rows, not the documented aggregate - `POST /campaigns/{id}/leads` returns import counters under entirely different field names than documented - documented `/leads/{id}`, `/top-level-analytics`, `/all-leads-activities`, `/lead-lists/`, and `/lead-tags/` all 404 Enum values (campaign status, track settings, stop-lead settings, webhook event types, engagement status) were probed value-by-value against the API. Notes on the API's shape, encoded in the mappers: - string-encoded numbers (`total_leads: "1"`, `sent_count: "0"`) are normalized to numbers so a field never changes type between operations - `seq_delay_details` is read as `delayInDays` but written as `delay_in_days` - webhook writes echo `event_type_map`/`category_id_map` objects while the list endpoint returns `event_types`/`categories` arrays; both map to arrays - `track_settings` reads back in a vocabulary it will not accept on write Statistics rows and lead message-history entries pass through unmapped: no account could produce a non-empty sample, so no field names were invented. Email-account tools and a webhook trigger are omitted for the same reason. Adds a `smartlead-errors` extractor since the API's 400s put the useful text in `message` while `error` is only "Bad Request".
1 parent 9ba51f9 commit 177543a

40 files changed

Lines changed: 4698 additions & 4 deletions

apps/docs/components/icons.tsx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8928,6 +8928,39 @@ export function LogfireIcon(props: SVGProps<SVGSVGElement>) {
89288928
)
89298929
}
89308930

8931+
export function SmartleadIcon(props: SVGProps<SVGSVGElement>) {
8932+
return (
8933+
<svg
8934+
{...props}
8935+
viewBox='0 0 26 26'
8936+
fill='none'
8937+
xmlns='http://www.w3.org/2000/svg'
8938+
aria-hidden='true'
8939+
>
8940+
<g transform='translate(1.4, -1.4)'>
8941+
<path
8942+
d='M12.0577 2.38666L2.39114 12.0532C1.07298 13.3714 1.07298 15.5085 2.39114 16.8267L2.39128 16.8268C3.70944 18.145 5.8466 18.145 7.16477 16.8268L16.8313 7.16029C18.1495 5.84212 18.1495 3.70496 16.8313 2.3868L16.8312 2.38666C15.513 1.0685 13.3758 1.0685 12.0577 2.38666Z'
8943+
fill='#0FDECD'
8944+
/>
8945+
<path
8946+
opacity='0.797'
8947+
d='M16.827 21.6312L7.16043 11.9646C5.84226 10.6465 3.7051 10.6465 2.38694 11.9646L2.3868 11.9648C1.06864 13.2829 1.06864 15.4201 2.3868 16.7383L12.0533 26.4048C13.3715 27.723 15.5087 27.723 16.8268 26.4048L16.827 26.4047C18.1451 25.0865 18.1451 22.9493 16.827 21.6312Z'
8948+
fill='#39BAE9'
8949+
/>
8950+
<path
8951+
d='M18.5001 18.3644L21.6412 15.2233C22.0695 14.795 22.0695 14.1005 21.6412 13.6722C21.2129 13.2439 20.5184 13.2439 20.0901 13.6722L16.949 16.8134C16.5207 17.2417 16.5207 17.9361 16.949 18.3644C17.3773 18.7927 18.0718 18.7927 18.5001 18.3644Z'
8952+
fill='#0CAEE9'
8953+
/>
8954+
<path
8955+
opacity='0.8'
8956+
d='M17.0086 12.1419L20.1498 15.2831C20.5781 15.7114 21.2725 15.7114 21.7008 15.2831L21.701 15.2829C22.1293 14.8546 22.1293 14.1602 21.701 13.7318L18.5598 10.5907C18.1315 10.1624 17.4371 10.1624 17.0088 10.5907L17.0086 10.5908C16.5803 11.0192 16.5803 11.7136 17.0086 12.1419Z'
8957+
fill='#3AE0D2'
8958+
/>
8959+
</g>
8960+
</svg>
8961+
)
8962+
}
8963+
89318964
export function ZohoDeskIcon(props: SVGProps<SVGSVGElement>) {
89328965
return (
89338966
<svg

apps/docs/components/ui/icon-mapping.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ import {
207207
SimTriggerIcon,
208208
SixtyfourIcon,
209209
SlackIcon,
210+
SmartleadIcon,
210211
SmtpIcon,
211212
SportmonksIcon,
212213
SQSIcon,
@@ -489,6 +490,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
489490
similarweb: SimilarwebIcon,
490491
sixtyfour: SixtyfourIcon,
491492
slack: SlackIcon,
493+
smartlead: SmartleadIcon,
492494
smtp: SmtpIcon,
493495
sportmonks: SportmonksIcon,
494496
sqs: SQSIcon,

apps/docs/content/docs/en/integrations/meta.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@
218218
"similarweb",
219219
"sixtyfour",
220220
"slack",
221+
"smartlead",
221222
"smtp",
222223
"sportmonks",
223224
"sqs",

0 commit comments

Comments
 (0)