Campagne
Crea campagne, scegli le liste e i segmenti, e inviale o programmale.
Crea una campagna
Crea una campagna nello stato draft. Richiede una chiave API con il permesso full. Genera un evento campaign.created.
Una nuova campagna non ha destinatari. Scegli le sue liste e i suoi segmenti con Aggiorna una campagna, poi inviala o programmala. I crediti vengono addebitati quando la campagna viene inviata: 2 crediti per email.
/campaignsParametri del corpo
namestringobbligatoriosubjectstring{{first_name}}.from_emailstringnews@acme.com.from_namestringAcme. Il messaggio viene inviato da Acme <news@acme.com>.reply_tostringfrom_email.htmlstring{{first_name}}, {{last_name}}, {{email}}, {{unsubscribe_url}} e {{cf.<key>}} per i campi personalizzati, con valori di riserva e blocchi {{#if}}. Imposta il corpo quando crei la campagna.textstringhtml.preview_textstring<mj-preview> MJML).contentstringhtml né text e content_type è html o text, Emailit invia content come corpo HTML o in testo semplice.content_typestringpredefinito: htmlcontent: html, text o mjml. Per il team di Emailit, Emailit compila il contenuto mjml in html (alpha). Per tutti gli altri mjml è un’etichetta: invia l’HTML compilato in html.utm_trackingbooleanpredefinito: falsetrue per aggiungere i parametri UTM a ogni link http e https quando la campagna viene inviata, così le tue analisi web attribuiscono le visite alla campagna. I parametri che un link ha già vengono mantenuti, e i link di disiscrizione e della versione web non vengono modificati. Vedi Opzioni di invio.utm_paramsobject | nullValori UTM da usare quando utm_tracking è attivo. Ogni chiave imposta un parametro utm_:
source(predefinitoemailit),medium(predefinitoemail) ecampaign(predefinito{campaign_name}).content,termeid, non aggiunti per impostazione predefinita.
I valori sono testo fino a 191 caratteri e possono contenere i token {campaign_name} (il nome della campagna in minuscolo, con trattini), {campaign_id}, {subject}, {variant} (il nome della versione del test A/B) e {send_date} (YYYY-MM-DD). Chiavi e token sconosciuti restituiscono 422. Le chiavi che non imposti mantengono i valori predefiniti; null o {} li ripristina tutti.
smart_sending_hoursinteger | nullnull (predefinito) disattiva lo smart sending. Il controllo avviene quando la campagna inizia l’invio. Le email delle automazioni e dell’API email non contano.exclude_unengagedbooleanpredefinito: falsetrue per saltare i contatti che hanno ricevuto 3 o più email di campagne negli ultimi 90 giorni e non ne hanno aperta né cliccata nessuna.tagsstring[]tags, l’elenco viene sostituito.send_strategystringpredefinito: immediateimmediate, throttled, local_time o smart_time. Salvata con la campagna e usata quando la invii senza una strategia.send_optionsobject | nullsend_strategy, salvate così come le passi e controllate per intero quando la campagna viene inviata. Vedi Invia o programma una campagna.ab_testobject | nullUn test A/B con da 2 a 5 versioni. Una quota casuale dei destinatari viene divisa in parti uguali tra le versioni. Dopo duration_hours, il resto dei destinatari riceve la versione con il risultato migliore. Mentre il test è in corso, lo stato della campagna è testing. I test A/B vengono inviati con la strategia immediate, subito o a un orario programmato.
enabled(boolean, predefinitotrue):falsedisattiva il test.winner_metric(string, predefinitoopened):opened,clicked,orders(ordini attribuiti per email inviata) orevenue(ricavi attribuiti per email inviata).orderserevenuefanno parte dell’e-commerce, che è in alpha: le altre richieste restituiscono403conerror: "commerce_alpha".test_size_percent(integer, predefinito20): quota dei destinatari inclusa nel test, da 10 a 100. Con 100 tutti sono nel test e non viene inviata nessuna versione vincente.duration_hours(integer, predefinito4): quanto dura il test prima dell’invio della versione vincente, da 1 a 168.variants(object[], obbligatorio): da 2 a 5 versioni. Ognuna può impostarename(fino a 100 caratteri, predefinitiA,B,Ce così via),subject,preview_text,from_name,from_email,reply_to,htmletext. I campi che una versione omette vengono presi dalla campagna. Almeno una versione deve impostare un oggetto, un testo di anteprima, un nome o un indirizzo del mittente oppure un corpo.
Restituisce
Restituisce 201 Created con l’oggetto campagna. status è draft. La risposta non riporta html, text né content. Include le impostazioni qui sopra, send_completes_at e send_summary (entrambi null finché la campagna non viene inviata) e ab_test con le versioni e i loro ID (cvr_…). Vedi Recupera una campagna.
Restituisce 400 se manca name, 403 se la chiave API non ha il permesso full e 422 se un’impostazione o il test A/B non è valido.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "draft",
"subject": "October news for {{first_name}}",
"from_email": "news@acme.com",
"from_name": "Acme",
"reply_to": "support@acme.com",
"preview_text": null,
"content_type": "html",
"created_at": "2026-10-01T09:30:12.482193Z",
"updated_at": "2026-10-01T09:30:12.482193Z",
"utm_tracking": false,
"utm_params": null,
"smart_sending_hours": null,
"exclude_unengaged": false,
"tags": [],
"send_strategy": "immediate",
"send_options": null,
"send_completes_at": null,
"send_summary": null,
"ab_test": {
"enabled": false,
"variants": []
}
}{
"error": "Bad Request"
}{
"statusCode": 403,
"error": "Forbidden",
"message": "Permission denied: campaigns:create"
}{
"message": "Validation failed. ab_test.variants: Send 2 to 5 variants.",
"errors": {
"ab_test.variants": ["Send 2 to 5 variants."]
}
}Recupera una campagna
Recupera una campagna tramite il suo ID o nome. Richiede una chiave API con il permesso full.
/campaigns/{id}Parametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna. Codifica per l’URL i nomi che contengono spazi o caratteri speciali.Restituisce
Restituisce l’oggetto campagna.
objectstringcampaign.idstringcmp_.statusstringdraft, scheduled, queued, sending, testing, sent, canceled o archived. queued indica che una campagna programmata ha raggiunto l’orario di invio ed è in attesa di un worker. testing indica che è in corso un test A/B e la versione vincente non è ancora stata inviata. Un invio distribuito nel tempo resta sending finché non arriva l’orario del suo ultimo batch.namestringsubjectstringfrom_emailstring"" finché non viene impostato.from_namestring"" finché non viene impostato.reply_tostring"" significa che le risposte vanno a from_email.preview_textstring | nullcontent_typestringhtml, text o mjml per le campagne create tramite l’API. Le campagne di cui Emailit ha compilato l’MJML (alpha) restituiscono anche un oggetto mjml con le versioni del documento.scheduled_atstring | nullsent_atstring | nullutm_trackingbooleanutm_paramsobject | nullnull. Vedi Crea una campagna.smart_sending_hoursinteger | nullnull quando lo smart sending è disattivato.exclude_unengagedbooleantagsstring[]send_strategystringimmediate, throttled, local_time o smart_time.send_optionsobject | nullsend_completes_atstring | nullsent.send_summaryobject | nullCosa ha fatto l’ultimo invio, oppure null prima che la campagna venga inviata:
recipients: contatti nelle liste e nei segmenti, una volta per indirizzo.suppressed: saltati perché l’indirizzo è soppresso.smart_sending_skipped: saltati dasmart_sending_hours.unengaged_skipped: saltati daexclude_unengaged.sent: contatti a cui è stata inviata la campagna. Per un test A/B, solo il gruppo di test.batches: numero di batch di invio.completes_at: uguale asend_completes_at.
ab_testobjectIl test A/B. Senza un test: { "enabled": false, "variants": [] }. Con un test: enabled, winner_metric, test_size_percent, duration_hours e variants. Ogni versione ha id (cvr_…), name, subject, preview_text, from_name, from_email, reply_to, html, text (null quando la versione usa il valore della campagna) e is_winner. Vedi Crea una campagna.
recipientsobject[]audience_id (aud_…) oppure segment_id (seg_…), ed exclude (true per un’esclusione).Il corpo (html, text e content) non è incluso nella risposta. Per engagement e ricavi, usa Recupera le statistiche di una campagna o il report nel pannello in Email MarketingCampaigns.
Restituisce 404 se nessuna campagna del workspace corrisponde a id.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "scheduled",
"subject": "October news for {{first_name}}",
"from_email": "news@acme.com",
"from_name": "Acme",
"reply_to": "support@acme.com",
"preview_text": null,
"content_type": "html",
"sent_at": null,
"scheduled_at": "2026-10-08 09:00:00+00",
"created_at": "2026-10-01 09:30:12.482193+00",
"updated_at": "2026-10-01 10:02:47.118204+00",
"utm_tracking": true,
"utm_params": {
"campaign": "{campaign_name}-{send_date}"
},
"smart_sending_hours": 16,
"exclude_unengaged": true,
"tags": ["newsletter", "q4"],
"send_strategy": "throttled",
"send_options": {
"per_hour": 5000
},
"send_completes_at": null,
"send_summary": null,
"ab_test": {
"enabled": false,
"variants": []
},
"recipients": [
{ "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
{ "segment_id": "seg_3Kq8VbN2xYt5Lm9Pw1Rc7Hd4Zf0", "exclude": true }
]
}{
"error": "Campaign not found"
}Aggiorna una campagna
Aggiorna i campi che passi e lascia invariati gli altri. Usalo per scegliere le liste e i segmenti della campagna prima di inviarla. Richiede una chiave API con il permesso full. Genera un evento campaign.updated.
Una campagna programmata invia ciò che è salvato al momento dell’invio, quindi puoi modificarla anche dopo averla programmata.
/campaigns/{id}Parametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna.Parametri del corpo
namestringsubjectstringfrom_emailstringfrom_namestringreply_tostringfrom_email.preview_textstringcontentstringcontent o content_type e il formato è html o text, Emailit invia content come nuovo corpo HTML o in testo semplice.content_typestringcontent: html, text o mjml. Per il team di Emailit, Emailit compila il contenuto mjml in html (alpha). Per tutti gli altri mjml è un’etichetta.utm_trackingbooleanutm_paramsobject | nullsource, medium, campaign, content, term e id. Sostituisce l’oggetto salvato; null ripristina i valori predefiniti. Vedi Crea una campagna.smart_sending_hoursinteger | nullnull lo disattiva.exclude_unengagedbooleantagsstring[]send_strategystringsend_optionsobject | nullsend_strategy, controllate per intero quando la campagna viene inviata. Vedi Invia o programma una campagna.ab_testobject | nullIl test A/B, con i campi descritti in Crea una campagna. Se invii ab_test, il test e le sue versioni vengono sostituiti. Per mantenere l’ID di una versione, e con esso i suoi risultati, includi il suo id (cvr_…) nella versione. null o "enabled": false disattiva il test ed elimina le versioni.
recipientsobject[]Le liste e i segmenti a cui destinare la campagna, fino a 100 elementi. Sostituisce l’elenco attuale. Includi almeno un elemento con exclude impostato su false. Ogni elemento ha audience_id oppure segment_id, non entrambi:
audience_id(string): l’ID di una lista (aud_…) di questo workspace.segment_id(string): l’ID di un segmento (seg_…) di questo workspace. I segmenti sono in alpha: solo il team di Emailit può aggiungerne uno, e le altre richieste restituiscono403conerror: "segments_alpha". I segmenti che la campagna ha già si possono mantenere.exclude(boolean, predefinitofalse):trueesclude gli iscritti della lista o i contatti del segmento, anche se si trovano anche in un elemento incluso.
Gli elementi duplicati vengono ignorati. Al momento dell’invio, Emailit invia un’email una sola volta a ogni contatto che è iscritto a una lista inclusa o corrisponde a un segmento incluso, non si trova in un elemento escluso, non è disiscritto a livello globale, è iscritto ad almeno una lista e non è soppresso. I segmenti vengono valutati al momento dell’invio. Se a quel punto una lista o un segmento esclusi non esistono più, la campagna non viene inviata.
Il corpo HTML e di testo si imposta quando crei la campagna. I campi sconosciuti nel corpo della richiesta vengono ignorati.
Restituisce
Restituisce l’oggetto campagna aggiornato, compresi recipients e ab_test. Vedi Recupera una campagna.
Restituisce 422 se recipients non ha nessuna lista o segmento incluso, ha più di 100 elementi, ha un elemento con entrambi gli ID o fa riferimento a una lista o a un segmento esterni al workspace. Restituisce 422 anche quando un’impostazione o il test A/B non è valido, o quando invii ab_test per una campagna che non è né una bozza né programmata, e 404 se la campagna non esiste.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "draft",
"subject": "Your October update, {{first_name}}",
"from_email": "news@acme.com",
"from_name": "Acme",
"reply_to": "support@acme.com",
"preview_text": null,
"content_type": "html",
"scheduled_at": null,
"created_at": "2026-10-01 09:30:12.482193+00",
"updated_at": "2026-10-01 10:02:47.118204+00",
"utm_tracking": false,
"utm_params": null,
"smart_sending_hours": null,
"exclude_unengaged": false,
"tags": [],
"send_strategy": "immediate",
"send_options": null,
"send_completes_at": null,
"send_summary": null,
"ab_test": {
"enabled": false,
"variants": []
},
"recipients": [
{ "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
{ "segment_id": "seg_3Kq8VbN2xYt5Lm9Pw1Rc7Hd4Zf0", "exclude": true }
]
}{
"message": "Validation failed.",
"errors": {
"recipients": ["One or more segments are invalid."]
}
}{
"error": "Campaign not found"
}Elenca le campagne
Restituisce le campagne del workspace, a partire dalla più recente. Richiede una chiave API con il permesso full.
/campaignsParametri di query
pageintegerpredefinito: 1limitintegerpredefinito: 10searchstringstatusstringdraft, scheduled, sending (corrisponde anche a queued), sent, canceled, archived o all.matchstringall (predefinito) richiede che corrispondano tutti i filtri. or richiede che ne corrisponda almeno uno. Vedi Filtri e ordinamento.
orderstringChiave di ordinamento di questo elenco. Vedi le chiavi di ordinamento qui sotto.
directionstringasc o desc.
Chiavi di filtro
I filtri usano parametri di query nella forma key.condition=value, ad esempio status.exact=sent o created_at.after=2026-09-01. Per le condizioni disponibili per ogni tipo, vedi Filtri e ordinamento.
| Chiave | Tipo | Note |
|---|---|---|
name |
string | |
subject |
string | |
status |
enum | draft, scheduled, queued, sending, sent, archived |
created_at |
date | |
sent_at |
date |
Chiavi di ordinamento per order: name, subject, status, created_at, sent_at.
Restituisce
Restituisce una pagina di oggetti campagna senza reply_to, preview_text, content_type e recipients, e solo con tags, send_strategy e send_completes_at tra le opzioni di invio. Usa Recupera una campagna per il resto.
dataobject[]total_recordsintegernext_page_urlstring | nullnull sull’ultima pagina. Contiene solo page e limit, quindi quando lo segui aggiungi di nuovo la ricerca e i filtri.previous_page_urlstring | nullnull sulla prima pagina.{
"data": [
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "sent",
"subject": "Your October update, {{first_name}}",
"from_email": "news@acme.com",
"from_name": "Acme",
"sent_at": "2026-10-08 09:00:04+00",
"scheduled_at": "2026-10-08 09:00:00+00",
"created_at": "2026-10-01 09:30:12.482193+00",
"updated_at": "2026-10-08 09:00:31+00",
"tags": ["newsletter"],
"send_strategy": "immediate",
"send_completes_at": null
}
],
"total_records": 34,
"next_page_url": "/v2/campaigns?page=2&limit=20",
"previous_page_url": null
}Invia o programma una campagna
Invia subito la campagna, oppure la programma quando passi un scheduled_at futuro. Richiede una chiave API con il permesso full e un workspace verificato: i workspace non verificati non possono inviare campagne e ricevono 403. Si possono inviare solo le bozze e le campagne programmate: una campagna in invio o già inviata restituisce 422, così una richiesta ripetuta non invia di nuovo l’email a tutti.
Prima di inviare, assicurati che la campagna abbia un from_email su un dominio verificato, un oggetto, un corpo html o text e almeno una lista o un segmento inclusi (impostati con Aggiorna una campagna). Ogni email costa 2 crediti.
/campaigns/{id}/sendParametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna.Parametri del corpo
scheduled_atstringQuando inviare. Accetta ISO 8601 (2026-10-08T09:00:00Z), un timestamp Unix in secondi o un’espressione in linguaggio naturale come tomorrow at 9am (interpretata in UTC). L’orario deve essere nel futuro e la campagna deve essere draft.
Omettilo per inviare subito. Per inviare in anticipo una campagna programmata, chiama questo endpoint senza scheduled_at.
send_strategystringCome distribuire l’invio nel tempo. Il valore predefinito è la strategia salvata nella campagna, altrimenti immediate. La strategia e le sue opzioni vengono salvate nella campagna. Vedi Opzioni di invio.
immediate: tutti insieme, subito o ascheduled_at.throttled: un ritmo costante diper_houremail, a partire da subito o dascheduled_at.local_time: un orario fisso nel fuso orario di ogni contatto.scheduled_atviene ignorato.smart_time: ogni contatto nell’ora in cui di solito apre o clicca, entro una finestra dall’inizio.
Le campagne con un test A/B vengono inviate solo con immediate.
send_optionsobjectOpzioni della strategia. Il valore predefinito sono le opzioni salvate nella campagna.
throttled:per_hour(integer, obbligatorio), da 100 a 1.000.000 email all’ora.local_time:local_time(string, obbligatorio), l’orario nel formatoYYYY-MM-DDTHH:mm, ad esempio2026-10-08T09:00, etimezone(string, predefinitoUTC), il fuso orario IANA per i contatti di cui non si conosce il fuso orario. I fusi orari dei contatti provengono dallo script di tracciamento. L’invio inizia quando l’orario arriva nel primo fuso orario (UTC+14); i contatti nei fusi in cui l’orario è già passato ricevono l’email subito. Fino ad allora la campagna èscheduled, quindi deve essere una bozza. Restituisce422quando l’orario è già passato in tutti i fusi orari.smart_time:window_hours(integer, predefinito24), da 1 a 48. Ogni contatto riceve l’email nell’ora del giorno (UTC) in cui ha aperto o cliccato di più negli ultimi 90 giorni, con un clic che vale tre volte un’apertura, se quell’ora cade nella finestra. I contatti senza questo storico ricevono l’ora più frequente tra gli altri destinatari. I contatti senza nessuno dei due, o la cui ora cade fuori dalla finestra, la ricevono all’inizio.
timezone è accettato con ogni strategia e deve essere un fuso orario IANA valido, ma lo usa solo local_time.
Restituisce
Invio immediato: lo stato passa a sending ed Emailit genera campaign.sending. Emailit determina poi i destinatari: ogni contatto iscritto alle liste incluse e ogni contatto che corrisponde ai segmenti inclusi, una volta per indirizzo, esclusi i contatti presenti in liste o segmenti esclusi, i contatti disiscritti a livello globale o non iscritti a nessuna lista e gli indirizzi soppressi. I segmenti vengono valutati in questo momento. Salta anche i contatti esclusi da smart_sending_hours ed exclude_unengaged. Le email vengono create negli orari stabiliti dalla strategia di invio. Quando tutti i destinatari sono stati passati alla pipeline di invio, lo stato diventa sent ed Emailit genera campaign.sent. Un invio distribuito nel tempo resta sending finché non arriva l’orario del suo ultimo batch (send_completes_at). Il send_summary della campagna mostra a quanti contatti è stata inviata la campagna e quanti sono stati saltati. Segui la consegna nel pannello, con Recupera le statistiche di una campagna o con gli eventi delle email.
Test A/B: il gruppo di test riceve le versioni e lo stato passa a testing. Dopo duration_hours, il resto dei destinatari riceve la versione vincente e lo stato passa a sent.
Programmazione: lo stato passa a scheduled ed Emailit genera campaign.scheduled. All’orario programmato la campagna diventa queued (campaign.queued) e poi viene inviata come descritto sopra. Se nel frattempo una lista o un segmento esclusi sono stati eliminati, la campagna torna a draft invece di essere inviata.
La risposta contiene object, id, name e il nuovo status, più scheduled_at quando programmi.
| Stato | Quando |
|---|---|
403 |
Il workspace non è verificato, oppure la chiave API non ha il permesso full. |
404 |
Nessuna campagna corrisponde a id. |
422 |
La campagna non è né una bozza né programmata (ad esempio, è in invio o è già stata inviata), scheduled_at non può essere interpretato o non è nel futuro, hai cercato di programmare una campagna che non è una bozza, la campagna non ha un corpo html o text, non ha destinatari (impostali con Aggiorna una campagna), esclude una lista o un segmento che non esiste più, oppure send_strategy e send_options non sono validi. L’errore sulla strategia indica il campo in message. |
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "scheduled",
"scheduled_at": "2026-10-08T09:00:00.000000Z"
}{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "sending"
}{
"code": "unverified_workspace_recipient",
"error": "Workspace not verified",
"message": "Unverified workspaces cannot send campaigns. You can send individual emails only to workspace members' account emails."
}{
"error": "Campaign cannot be sent",
"message": "Campaign status is 'sent'. Only draft or scheduled campaigns can be sent."
}{
"error": "Campaign excludes a deleted audience or segment",
"message": "This campaign excludes an audience or segment that no longer exists. Update its recipients before sending."
}{
"error": "Invalid send strategy",
"message": "send_options.per_hour: Send between 100 and 1,000,000 emails per hour."
}Annulla una campagna
Imposta lo stato della campagna su canceled e genera un evento campaign.canceled. Richiede una chiave API con il permesso full.
Puoi annullare solo le campagne con stato draft o sending; qualsiasi altro stato restituisce 422. Annullare una campagna in fase di invio non richiama le email già in coda per la consegna.
/campaigns/{id}/cancelParametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna.Restituisce
Restituisce object, id, name e status (canceled).
Restituisce 422 se lo stato della campagna non è draft o sending, e 404 se la campagna non esiste.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "canceled"
}{
"error": "Campaign cannot be canceled",
"message": "Campaign status is 'scheduled'. Only 'draft' or 'sending' campaigns can be canceled."
}{
"error": "Campaign not found"
}Recupera le statistiche di una campagna
Recupera il report di una campagna: quante email sono state inviate, consegnate, aperte e cliccate, i risultati per provider di posta, i ricavi degli ordini attribuiti alla campagna (e-commerce, alpha) e, per i test A/B, i risultati per versione. Il report nel pannello in Email MarketingCampaigns mostra gli stessi numeri. Richiede una chiave API con il permesso full.
Ogni conteggio è un numero di email: un’email aperta tre volte conta una sola volta in opened. Le percentuali sono relative a sent salvo diversa indicazione, con due cifre decimali.
/campaigns/{id}/statsParametri di percorso
idstringObbligatorioL’ID della campagna (cmp_...) o il nome della campagna. Codifica nell’URL i nomi che contengono spazi o caratteri speciali.
Parametri di query
fromstringConta solo le email create a partire da questo momento, una data o una data e ora ISO 8601.
tostringConta solo le email create fino a questo momento compreso.
statusstringConta solo le email il cui stato attuale è questo: accepted, scheduled, delivered, loaded, clicked, attempted, bounced, failed, rejected, suppressed o complained. Gli altri valori vengono ignorati.
I filtri si applicano ai conteggi delle email, ai provider e ai conteggi del test A/B, e from e to si applicano anche a unsubscribed. Ricavi, ordini e acquirenti coprono sempre tutti gli ordini attribuiti alla campagna, e i loro tassi usano tutte le email consegnate della campagna.
Restituisce
objectstringSempre campaign_stats.
campaign_idstringL’ID della campagna (cmp_...).
sentintegerEmail create per la campagna. sent_percent è 100, oppure 0 prima che venga inviato qualcosa.
delivered, delivered_percentinteger, numberEmail con stato delivered, loaded o clicked.
opened, opened_percentinteger, numberEmail aperte almeno una volta.
clicked, clicked_percentinteger, numberEmail con almeno un clic tracciato.
click_through_percentnumberclicked come percentuale di opened.
bounced, suppressed, complained, attemptedintegerEmail con stato bounced, suppressed, complained o attempted (in attesa di un nuovo tentativo). Ognuno ha anche un campo _percent.
not_processed, not_processed_percentinteger, numberEmail ancora accepted o scheduled.
unsubscribed, unsubscribed_percentinteger, numberDisiscrizioni dalle email della campagna.
providersobject[]Risultati per provider di posta dei destinatari, per i provider con almeno un’email. key è gmail, outlook.com, live.com, hotmail.com, yahoo, icloud o other, e label è il suo nome visualizzato. Ognuno ha sent, delivered, opened, clicked e bounced con i rispettivi campi _percent. sent_percent è la quota del provider su tutte le email; le altre percentuali sono relative al sent del provider.
commerceobjectSolo per il team di Emailit finché l’e-commerce è in alpha: le altre richieste non ricevono questo campo, e le loro variants A/B omettono orders, revenue e revenue_per_recipient. Ordini attribuiti alla campagna. I ricavi sono il totale dell’ordine meno i rimborsi, e gli ordini annullati non contano. Gli importi in valute diverse non vengono sommati: la valuta principale è quella con più ricavi.
-
currency(string o null): la valuta principale. -
revenue(number): i ricavi nella valuta principale. -
orders(integer): gli ordini attribuiti in tutte le valute. -
buyers(integer): gli acquirenti distinti in tutte le valute. Un acquirente che ha pagato in due valute conta una sola volta. -
average_order_value(number): nella valuta principale. -
conversion_percent(number):buyerscome percentuale delle email consegnate della campagna. -
revenue_per_recipient(number):revenuediviso per le email consegnate della campagna. -
by_currency(object[]):currency,orders,revenue,buyerseaverage_order_valueper ogni valuta, a partire dai ricavi più alti.
ab_testobjectSolo per le campagne con un test A/B.
-
winner_metric(string):opened,clicked,ordersorevenue. -
leader_variant_id(string o null): la versione con il tasso migliore finora: aperture, clic od ordini per email inviata, oppure ricavi per email inviata. -
win_probability(number o null): la probabilità, in percentuale, che la versione in testa batta davvero la seconda. -
significance(string):significant(90% o più, con almeno 50 email per versione),promising(75% o più, con lo stesso minimo),not_significant(meno del 75% con almeno 1800 email per versione) oinconclusive. Perrevenue, la probabilità si basa sugli ordini. -
variants(object[]): per ogni versionevariant_id,name,subject,is_winner,sent,delivered,opened,opened_percent,clicked,clicked_percent,orders,revenueerevenue_per_recipient. Quando la versione vincente viene inviata al resto della lista, i conteggi della versione vincente includono quelle email.
Restituisce 404 se nessuna campagna corrisponde a id, e 503 quando l’archivio delle analisi non è disponibile.
{
"object": "campaign_stats",
"campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"sent": 12480,
"sent_percent": 100,
"delivered": 12302,
"delivered_percent": 98.57,
"opened": 5021,
"opened_percent": 40.23,
"clicked": 1187,
"clicked_percent": 9.51,
"click_through_percent": 23.64,
"bounced": 98,
"bounced_percent": 0.79,
"suppressed": 42,
"suppressed_percent": 0.34,
"complained": 3,
"complained_percent": 0.02,
"attempted": 0,
"attempted_percent": 0,
"not_processed": 38,
"not_processed_percent": 0.3,
"unsubscribed": 27,
"unsubscribed_percent": 0.22,
"providers": [
{
"key": "gmail",
"label": "Gmail",
"sent": 7310,
"sent_percent": 58.57,
"delivered": 7236,
"delivered_percent": 98.99,
"opened": 3102,
"opened_percent": 42.44,
"clicked": 741,
"clicked_percent": 10.14,
"bounced": 41,
"bounced_percent": 0.56
},
{
"key": "other",
"label": "Other",
"sent": 5170,
"sent_percent": 41.43,
"delivered": 5066,
"delivered_percent": 97.99,
"opened": 1919,
"opened_percent": 37.12,
"clicked": 446,
"clicked_percent": 8.63,
"bounced": 57,
"bounced_percent": 1.1
}
],
"commerce": {
"currency": "USD",
"revenue": 17311.9,
"orders": 214,
"buyers": 198,
"average_order_value": 86.13,
"conversion_percent": 1.61,
"revenue_per_recipient": 1.41,
"by_currency": [
{
"currency": "USD",
"orders": 201,
"revenue": 17311.9,
"buyers": 186,
"average_order_value": 86.13
},
{
"currency": "EUR",
"orders": 13,
"revenue": 1052.4,
"buyers": 12,
"average_order_value": 80.95
}
]
}
}{
"object": "campaign_stats",
"campaign_id": "cmp_37WtKnTZIi4ZbdQ8057IgW0Pbjk",
"sent": 2496,
"sent_percent": 100,
"delivered": 2461,
"delivered_percent": 98.6,
"opened": 1004,
"opened_percent": 40.22,
"clicked": 231,
"clicked_percent": 9.25,
"click_through_percent": 23.01,
"bounced": 21,
"bounced_percent": 0.84,
"suppressed": 9,
"suppressed_percent": 0.36,
"complained": 1,
"complained_percent": 0.04,
"attempted": 0,
"attempted_percent": 0,
"not_processed": 5,
"not_processed_percent": 0.2,
"unsubscribed": 6,
"unsubscribed_percent": 0.24,
"providers": [
{
"key": "gmail",
"label": "Gmail",
"sent": 1460,
"sent_percent": 58.49,
"delivered": 1447,
"delivered_percent": 99.11,
"opened": 612,
"opened_percent": 41.92,
"clicked": 139,
"clicked_percent": 9.52,
"bounced": 9,
"bounced_percent": 0.62
},
{
"key": "other",
"label": "Other",
"sent": 1036,
"sent_percent": 41.51,
"delivered": 1014,
"delivered_percent": 97.88,
"opened": 392,
"opened_percent": 37.84,
"clicked": 92,
"clicked_percent": 8.88,
"bounced": 12,
"bounced_percent": 1.16
}
],
"commerce": {
"currency": "USD",
"revenue": 3297.4,
"orders": 38,
"buyers": 36,
"average_order_value": 86.77,
"conversion_percent": 1.46,
"revenue_per_recipient": 1.34,
"by_currency": [
{
"currency": "USD",
"orders": 38,
"revenue": 3297.4,
"buyers": 36,
"average_order_value": 86.77
}
]
},
"ab_test": {
"winner_metric": "clicked",
"leader_variant_id": "cvr_3uzJsNMbJopoPIZCgLl7zcXxALw",
"win_probability": 99.5,
"significance": "significant",
"variants": [
{
"variant_id": "cvr_3qM7nyKvTUlnBLzE9vtnG03baRV",
"name": "A",
"subject": "New trail shoes are here",
"is_winner": false,
"sent": 1248,
"delivered": 1231,
"opened": 468,
"opened_percent": 37.5,
"clicked": 97,
"clicked_percent": 7.77,
"orders": 14,
"revenue": 1188.6,
"revenue_per_recipient": 0.97
},
{
"variant_id": "cvr_3uzJsNMbJopoPIZCgLl7zcXxALw",
"name": "B",
"subject": "Your next trail shoe is 25% off",
"is_winner": false,
"sent": 1248,
"delivered": 1230,
"opened": 536,
"opened_percent": 42.95,
"clicked": 134,
"clicked_percent": 10.74,
"orders": 24,
"revenue": 2108.8,
"revenue_per_recipient": 1.71
}
]
}
}{
"error": "Campaign not found"
}{
"error": "analytics unavailable"
}Elimina una campagna
Elimina definitivamente una campagna. Richiede una chiave API con il permesso full. Genera un evento campaign.deleted.
L’eliminazione di una campagna non influisce sulle email già inviate o in coda. Per fermare una campagna in fase di invio, prima annullala.
/campaigns/{id}Parametri di percorso
idstringobbligatoriocmp_…) o il nome della campagna.Restituisce
Restituisce object, id, name e deleted: true. Restituisce 404 se la campagna non esiste.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"deleted": true
}{
"error": "Campaign not found"
}