Campanhas
Crie campanhas, escolha as listas de contatos e os segmentos delas e envie ou agende o envio.
Criar uma campanha
Cria uma campanha com o status draft. Requer uma chave de API com escopo full. Emite um evento campaign.created.
Uma campanha nova não tem destinatários. Escolha as listas de contatos e os segmentos dela com Atualizar uma campanha e depois envie ou agende o envio. Os créditos são cobrados quando a campanha é enviada: 2 créditos por e-mail.
/campaignsParâmetros do corpo
namestringobrigatóriosubjectstring{{first_name}}.from_emailstringnews@acme.com.from_namestringAcme. A mensagem é enviada de Acme <news@acme.com>.reply_tostringfrom_email quando a campanha é enviada.htmlstring{{first_name}}, {{last_name}}, {{email}}, {{unsubscribe_url}} e {{cf.<key>}} para campos personalizados, com valores alternativos e blocos {{#if}}. Defina o corpo ao criar a campanha.textstringhtml.preview_textstring<mj-preview> do MJML).contentstringhtml nem text e content_type for html ou text, o Emailit envia content como corpo HTML ou em texto simples.content_typestringpadrão: htmlcontent: html, text ou mjml. Para a equipe do Emailit, o Emailit compila o conteúdo mjml em html (alfa). Para todos os outros, mjml é um rótulo: envie o HTML compilado em html.utm_trackingbooleanpadrão: falsetrue para adicionar parâmetros UTM a todos os links http e https quando a campanha for enviada, para que a sua ferramenta de análise web atribua as visitas à campanha. Os parâmetros que um link já tem são mantidos, e os links de descadastro e de versão web não são alterados. Consulte Opções de envio.utm_paramsobject | nullValores UTM a usar quando utm_tracking estiver ativado. Cada chave define um parâmetro utm_:
source(padrãoemailit),medium(padrãoemail) ecampaign(padrão{campaign_name}).content,termeid, que não são adicionados por padrão.
Os valores são textos de até 191 caracteres e podem conter os tokens {campaign_name} (o nome da campanha em minúsculas, com hifens), {campaign_id}, {subject}, {variant} (o nome da versão do teste A/B) e {send_date} (YYYY-MM-DD). Chaves e tokens desconhecidos retornam 422. As chaves que você não define mantêm os valores padrão; null ou {} redefine todas elas.
smart_sending_hoursinteger | nullnull (padrão) desativa o envio inteligente. Verificado quando o envio da campanha começa. Os e-mails de automações e da API de e-mail não contam.exclude_unengagedbooleanpadrão: falsetrue para ignorar os contatos que receberam 3 ou mais e-mails de campanha nos últimos 90 dias e não abriram nem clicaram em nenhum deles.tagsstring[]tags substitui a lista.send_strategystringpadrão: immediateimmediate, throttled, local_time ou smart_time. Armazenado com a campanha e usado quando você a envia sem uma estratégia.send_optionsobject | nullsend_strategy, armazenadas como foram enviadas e verificadas por completo quando a campanha é enviada. Consulte Enviar ou agendar uma campanha.ab_testobject | nullUm teste A/B de 2 a 5 versões. Uma parte aleatória dos destinatários é dividida igualmente entre as versões. Depois de duration_hours, o resto dos destinatários recebe a versão com o melhor resultado. Enquanto o teste está em andamento, o status da campanha é testing. Os testes A/B são enviados com a estratégia immediate, agora ou em um horário agendado.
enabled(booleano, padrãotrue):falsedesativa o teste.winner_metric(string, padrãoopened):opened,clicked,orders(pedidos atribuídos por e-mail enviado) ourevenue(receita atribuída por e-mail enviado).orderserevenuefazem parte do e-commerce, que está em alfa: as outras requisições retornam403comerror: "commerce_alpha".test_size_percent(inteiro, padrão20): a parte dos destinatários no teste, de 10 a 100. Com 100, todos estão no teste e nenhuma vencedora é enviada.duration_hours(inteiro, padrão4): quanto tempo o teste dura antes de a vencedora ser enviada, de 1 a 168.variants(object[], obrigatório): de 2 a 5 versões. Cada uma pode definirname(até 100 caracteres; o padrão éA,B,Ce assim por diante),subject,preview_text,from_name,from_email,reply_to,htmletext. Os campos que uma versão não define vêm da campanha. Pelo menos uma versão precisa definir um assunto, um texto de pré-visualização, um nome ou endereço de remetente ou um corpo.
Retorno
Retorna 201 Created com o objeto de campanha. status é draft. A resposta não devolve html, text nem content. Ela inclui as configurações acima, send_completes_at e send_summary (ambos null até a campanha ser enviada) e ab_test com as versões e os IDs delas (cvr_…). Consulte Obter uma campanha.
Retorna 400 se name estiver ausente, 403 se a chave de API não tiver o escopo full e 422 se uma configuração ou o teste A/B for inválido.
{
"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."]
}
}Obter uma campanha
Obtém uma campanha pelo ID ou pelo nome. Requer uma chave de API com escopo full.
/campaigns/{id}Parâmetros de caminho
idstringobrigatóriocmp_…) ou o nome da campanha. Codifique para URL os nomes que contêm espaços ou caracteres especiais.Retorno
Retorna o objeto de campanha.
objectstringcampaign.idstringcmp_.statusstringdraft, scheduled, queued, sending, testing, sent, canceled ou archived. queued significa que uma campanha agendada chegou ao horário de envio e está aguardando um worker. testing significa que um teste A/B está em andamento e a versão vencedora ainda não foi enviada. Um envio distribuído ao longo do tempo fica em sending até a hora do último lote.namestringsubjectstringfrom_emailstring"" até ser definido.from_namestring"" até ser definido.reply_tostring"" significa que as respostas vão para from_email.preview_textstring | nullcontent_typestringhtml, text ou mjml para campanhas criadas pela API. As campanhas cujo MJML o Emailit compilou (alfa) também retornam um objeto mjml com as versões do documento.scheduled_atstring | nullsent_atstring | nullutm_trackingbooleanutm_paramsobject | nullnull. Consulte Criar uma campanha.smart_sending_hoursinteger | nullnull quando o envio inteligente está desativado.exclude_unengagedbooleantagsstring[]send_strategystringimmediate, throttled, local_time ou smart_time.send_optionsobject | nullsend_completes_atstring | nullsent.send_summaryobject | nullO que o último envio fez, ou null antes de a campanha ser enviada:
recipients: os contatos das listas de contatos e dos segmentos, uma vez por endereço.suppressed: ignorados porque o endereço está suprimido.smart_sending_skipped: ignorados porsmart_sending_hours.unengaged_skipped: ignorados porexclude_unengaged.sent: os contatos para os quais a campanha foi enviada. Em um teste A/B, só o grupo de teste.batches: número de lotes de envio.completes_at: o mesmo quesend_completes_at.
ab_testobjectO teste A/B. Sem teste: { "enabled": false, "variants": [] }. Com teste: enabled, winner_metric, test_size_percent, duration_hours e variants. Cada versão tem id (cvr_…), name, subject, preview_text, from_name, from_email, reply_to, html, text (null quando a versão usa o valor da campanha) e is_winner. Consulte Criar uma campanha.
recipientsobject[]audience_id (aud_…) ou segment_id (seg_…), além de exclude (true para uma exclusão).O corpo (html, text e content) não é incluído na resposta. Para o engajamento e a receita, use Obter as estatísticas de uma campanha ou o relatório no painel, em Email MarketingCampaigns.
Retorna 404 se nenhuma campanha do workspace corresponder 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"
}Atualizar uma campanha
Atualiza os campos que você passar e deixa os outros como estão. Use-o para escolher as listas de contatos e os segmentos da campanha antes de enviá-la. Requer uma chave de API com escopo full. Emite um evento campaign.updated.
Uma campanha agendada envia o que estiver salvo no horário de envio, então você ainda pode editá-la depois de agendar.
/campaigns/{id}Parâmetros de caminho
idstringobrigatóriocmp_…) ou o nome da campanha.Parâmetros do corpo
namestringsubjectstringfrom_emailstringfrom_namestringreply_tostringfrom_email.preview_textstringcontentstringcontent ou content_type e o formato é html ou text, o Emailit envia content como o novo corpo HTML ou em texto simples.content_typestringcontent: html, text ou mjml. Para a equipe do Emailit, o Emailit compila o conteúdo mjml em html (alfa). Para todos os outros, mjml é um rótulo.utm_trackingbooleanutm_paramsobject | nullsource, medium, campaign, content, term e id. Substitui o objeto armazenado; null restaura os padrões. Consulte Criar uma campanha.smart_sending_hoursinteger | nullnull o desativa.exclude_unengagedbooleantagsstring[]send_strategystringimmediate, throttled, local_time ou smart_time. Usado quando você envia a campanha sem uma estratégia.send_optionsobject | nullsend_strategy, verificadas por completo quando a campanha é enviada. Consulte Enviar ou agendar uma campanha.ab_testobject | nullO teste A/B, com os campos descritos em Criar uma campanha. Enviar ab_test substitui o teste e as versões dele. Para manter o ID de uma versão, e com ele os resultados dela, inclua o id (cvr_…) na versão. null ou "enabled": false desativa o teste e exclui as versões.
recipientsobject[]As listas de contatos e os segmentos de destino, até 100 itens. Substitui a relação atual. Inclua pelo menos um item com exclude definido como false. Cada item tem audience_id ou segment_id, nunca os dois:
audience_id(string): um ID de lista de contatos (aud_…) deste workspace.segment_id(string): um ID de segmento (seg_…) deste workspace. Os segmentos estão em alfa: apenas a equipe do Emailit pode adicionar um, e as outras requisições retornam403comerror: "segments_alpha". Os segmentos que a campanha já tem podem ser mantidos.exclude(booleano, padrãofalse):truedeixa de fora os inscritos da lista ou os contatos do segmento, mesmo que eles também estejam em um item incluído.
Itens duplicados são ignorados. No momento do envio, o Emailit envia um e-mail uma única vez a cada contato que está inscrito em uma lista incluída ou corresponde a um segmento incluído, não está em um item excluído, não está descadastrado globalmente, está inscrito em pelo menos uma lista e não está suprimido. Os segmentos são avaliados no momento do envio. Se uma lista ou um segmento excluído não existir mais nesse momento, a campanha não é enviada.
O corpo HTML e o de texto são definidos quando você cria a campanha. Campos desconhecidos no corpo são ignorados.
Retorno
Retorna o objeto de campanha atualizado, incluindo recipients e ab_test. Consulte Obter uma campanha.
Retorna 422 se recipients não tiver nenhuma lista ou segmento incluído, tiver mais de 100 itens, tiver um item com os dois IDs ou fizer referência a uma lista ou um segmento de fora do workspace. Também retorna 422 quando uma configuração ou o teste A/B for inválido, ou quando você enviar ab_test para uma campanha que não é um rascunho nem está agendada, e 404 se a campanha não existir.
{
"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"
}Listar campanhas
Retorna as campanhas do workspace, das mais recentes para as mais antigas. Requer uma chave de API com escopo full.
/campaignsParâmetros de consulta
pageintegerpadrão: 1limitintegerpadrão: 10searchstringstatusstringdraft, scheduled, sending (também corresponde a queued), sent, canceled, archived ou all.matchstringall (padrão) exige todos os filtros. or corresponde a qualquer filtro. Consulte Filtragem.
orderstringChave de ordenação desta lista. Consulte as chaves de ordenação abaixo.
directionstringasc ou desc.
Chaves de filtro
Os filtros usam parâmetros de consulta key.condition=value, por exemplo status.exact=sent ou created_at.after=2026-09-01. Consulte Filtragem para ver as condições de cada tipo.
| Chave | Tipo | Observações |
|---|---|---|
name |
string | |
subject |
string | |
status |
enum | draft, scheduled, queued, sending, sent, archived |
created_at |
date | |
sent_at |
date |
Chaves de ordenação para order: name, subject, status, created_at, sent_at.
Retorno
Retorna uma página de objetos de campanha sem reply_to, preview_text, content_type e recipients e, das opções de envio, só com tags, send_strategy e send_completes_at. Use Obter uma campanha para obter o resto.
dataobject[]total_recordsintegernext_page_urlstring | nullnull na última página. Ele leva apenas page e limit, então adicione de novo a sua busca e os seus filtros ao segui-lo.previous_page_urlstring | nullnull na primeira página.{
"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
}Enviar ou agendar uma campanha
Envia a campanha agora ou a agenda quando você passa um scheduled_at futuro. Requer uma chave de API com escopo full e um workspace verificado: workspaces não verificados não podem enviar campanhas e recebem 403. Só é possível enviar rascunhos e campanhas agendadas: uma campanha em envio ou já enviada retorna 422, para que uma requisição repetida não envie o e-mail a todos de novo.
Antes de enviar, confira se a campanha tem um from_email em um domínio verificado, um assunto, um corpo html ou text e pelo menos uma lista de contatos ou um segmento incluído (definidos com Atualizar uma campanha). Cada e-mail custa 2 créditos.
/campaigns/{id}/sendParâmetros de caminho
idstringobrigatóriocmp_…) ou o nome da campanha.Parâmetros do corpo
scheduled_atstringQuando enviar. Aceita ISO 8601 (2026-10-08T09:00:00Z), um timestamp Unix em segundos ou linguagem natural em inglês, como tomorrow at 9am (interpretada em UTC). O horário deve estar no futuro e a campanha deve ser um draft.
Omita-o para enviar agora. Para enviar antes uma campanha agendada, chame este endpoint sem scheduled_at.
send_strategystringComo distribuir o envio ao longo do tempo. O padrão é a estratégia salva na campanha ou, se não houver uma, immediate. A estratégia e as opções dela são salvas na campanha. Consulte Opções de envio.
immediate: todos de uma vez, agora ou emscheduled_at.throttled: um ritmo uniforme deper_houre-mails, começando agora ou emscheduled_at.local_time: um horário de relógio no fuso horário de cada contato.scheduled_até ignorado.smart_time: cada contato no horário em que costuma abrir ou clicar, dentro de uma janela a partir do início.
As campanhas com um teste A/B só são enviadas com immediate.
send_optionsobjectOpções da estratégia. O padrão são as opções salvas na campanha.
throttled:per_hour(inteiro, obrigatório), de 100 a 1.000.000 e-mails por hora.local_time:local_time(string, obrigatório), o horário no formatoYYYY-MM-DDTHH:mm, por exemplo2026-10-08T09:00, etimezone(string, padrãoUTC), o fuso horário IANA para os contatos cujo fuso horário não é conhecido. Os fusos horários dos contatos vêm do script de rastreamento. O envio começa quando o primeiro fuso horário (UTC+14) chega ao horário; os contatos em fusos em que ele já passou recebem o e-mail na hora. Até lá, a campanha fica emscheduled, então ela precisa ser um rascunho. Retorna422quando o horário já passou em todos os fusos horários.smart_time:window_hours(inteiro, padrão24), de 1 a 48. Cada contato recebe o e-mail na hora do dia (UTC) em que mais abriu ou clicou nos últimos 90 dias, com um clique valendo três vezes mais que uma abertura, quando essa hora cai dentro da janela. Os contatos sem esse histórico recebem na hora mais comum entre os outros destinatários. Os contatos sem nenhum dos dois, ou cuja hora fica fora da janela, recebem no início.
timezone é aceito em todas as estratégias e precisa ser um fuso horário IANA válido, mas só local_time o usa.
Retorno
Enviar agora: o status muda para sending e o Emailit emite campaign.sending. Em seguida, o Emailit define os destinatários: cada contato inscrito nas listas de contatos incluídas e cada contato que corresponde aos segmentos incluídos, uma vez por endereço, excluindo os contatos de listas ou segmentos excluídos, os contatos descadastrados globalmente ou que não estão em nenhuma lista e os endereços suprimidos. Os segmentos são avaliados nesse momento. Ele também ignora os contatos deixados de fora por smart_sending_hours e exclude_unengaged. Os e-mails são criados nos horários que a estratégia de envio define. Quando todos os destinatários tiverem sido passados ao pipeline de envio, o status muda para sent e o Emailit emite campaign.sent. Um envio distribuído ao longo do tempo fica em sending até a hora do último lote (send_completes_at). O send_summary da campanha mostra para quantos contatos a campanha foi enviada e quantos foram ignorados. Acompanhe a entrega no painel, com Obter as estatísticas de uma campanha ou com os eventos de e-mail.
Teste A/B: o grupo de teste recebe as versões e o status muda para testing. Depois de duration_hours, o resto dos destinatários recebe a versão vencedora e o status muda para sent.
Agendar: o status muda para scheduled e o Emailit emite campaign.scheduled. No horário agendado, a campanha passa a queued (campaign.queued) e depois é enviada como descrito acima. Se uma lista ou um segmento excluído tiver sido apagado nesse intervalo, a campanha volta para draft em vez de ser enviada.
A resposta contém object, id, name e o novo status, além de scheduled_at quando você agenda.
| Status | Quando |
|---|---|
403 |
O workspace não está verificado ou a chave de API não tem o escopo full. |
404 |
Nenhuma campanha corresponde a id. |
422 |
A campanha não é um rascunho nem está agendada (por exemplo, ela está em envio ou já foi enviada), scheduled_at não pode ser interpretado ou não está no futuro, você tentou agendar uma campanha que não é um rascunho, a campanha não tem corpo html nem text, ela não tem destinatários (defina-os com Atualizar uma campanha), ela exclui uma lista ou um segmento que não existe mais, ou send_strategy e send_options são inválidos. O erro da estratégia indica o campo em 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."
}Cancelar uma campanha
Define o status da campanha como canceled e emite um evento campaign.canceled. Requer uma chave de API com escopo full.
Só é possível cancelar campanhas com o status draft ou sending; qualquer outro status retorna 422. Cancelar uma campanha em envio não recolhe os e-mails que já estão na fila de entrega.
/campaigns/{id}/cancelParâmetros de caminho
idstringobrigatóriocmp_…) ou o nome da campanha.Retorno
Retorna object, id, name e status (canceled).
Retorna 422 se o status da campanha não for draft nem sending, e 404 se a campanha não existir.
{
"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"
}Obter as estatísticas de uma campanha
Obtém o relatório de uma campanha: quantos e-mails foram enviados, entregues, abertos e clicados, os resultados por provedor de e-mail, a receita dos pedidos atribuídos à campanha (e-commerce, alfa) e, nos testes A/B, os resultados por versão. O relatório do painel em Email MarketingCampaigns mostra os mesmos números. Requer uma chave de API com escopo full.
Todas as contagens são números de e-mails: um e-mail aberto três vezes conta uma vez em opened. As porcentagens são relativas a sent, salvo indicação em contrário, com duas casas decimais.
/campaigns/{id}/statsParâmetros de caminho
idstringObrigatórioO ID da campanha (cmp_...) ou o nome da campanha. Codifique para URL os nomes que contêm espaços ou caracteres especiais.
Parâmetros de consulta
fromstringConta só os e-mails criados neste momento ou depois dele, uma data ou data e hora ISO 8601.
tostringConta só os e-mails criados neste momento ou antes dele.
statusstringConta só os e-mails cujo status atual é este: accepted, scheduled, delivered, loaded, clicked, attempted, bounced, failed, rejected, suppressed ou complained. Os outros valores são ignorados.
Os filtros se aplicam às contagens de e-mails, aos provedores e às contagens do teste A/B, e from e to também se aplicam a unsubscribed. A receita, os pedidos e os compradores sempre abrangem todos os pedidos atribuídos à campanha, e as taxas deles usam todos os e-mails entregues da campanha.
Retorno
objectstringSempre campaign_stats.
campaign_idstringO ID da campanha (cmp_...).
sentintegerOs e-mails criados para a campanha. sent_percent é 100, ou 0 antes de qualquer envio.
delivered, delivered_percentinteger, numberOs e-mails cujo status é delivered, loaded ou clicked.
opened, opened_percentinteger, numberOs e-mails abertos pelo menos uma vez.
clicked, clicked_percentinteger, numberOs e-mails com pelo menos um clique rastreado.
click_through_percentnumberclicked como porcentagem de opened.
bounced, suppressed, complained, attemptedintegerOs e-mails cujo status é bounced, suppressed, complained ou attempted (aguardando uma nova tentativa). Cada um também tem um campo _percent.
not_processed, not_processed_percentinteger, numberOs e-mails ainda accepted ou scheduled.
unsubscribed, unsubscribed_percentinteger, numberDescadastros a partir dos e-mails da campanha.
providersobject[]Resultados por provedor de e-mail dos destinatários, para os provedores com pelo menos um e-mail. key é gmail, outlook.com, live.com, hotmail.com, yahoo, icloud ou other, e label é o nome de exibição dele. Cada um tem sent, delivered, opened, clicked e bounced com os campos _percent correspondentes. sent_percent é a participação do provedor em todos os e-mails; as outras porcentagens são relativas ao sent do provedor.
commerceobjectApenas para a equipe do Emailit enquanto o e-commerce estiver em alfa: as outras requisições não recebem este campo, e as variants do teste A/B delas deixam de fora orders, revenue e revenue_per_recipient. Pedidos atribuídos à campanha. A receita é o total do pedido menos os reembolsos, e os pedidos cancelados não contam. Os valores em moedas diferentes não são somados: a moeda principal é a que tem mais receita.
-
currency(string ou null): a moeda principal. -
revenue(número): a receita na moeda principal. -
orders(inteiro): os pedidos atribuídos em todas as moedas. -
buyers(inteiro): os compradores distintos em todas as moedas. Um comprador que pagou em duas moedas conta uma vez. -
average_order_value(número): na moeda principal. -
conversion_percent(número):buyerscomo porcentagem dos e-mails entregues da campanha. -
revenue_per_recipient(número):revenuedividido pelos e-mails entregues da campanha. -
by_currency(object[]):currency,orders,revenue,buyerseaverage_order_valuede cada moeda, da maior receita para a menor.
ab_testobjectSó para campanhas com um teste A/B.
-
winner_metric(string):opened,clicked,ordersourevenue. -
leader_variant_id(string ou null): a versão com a melhor taxa até agora: aberturas, cliques ou pedidos por e-mail enviado, ou receita por e-mail enviado. -
win_probability(número ou null): a probabilidade, em porcentagem, de que a versão na liderança realmente supere a segunda colocada. -
significance(string):significant(90% ou mais, com pelo menos 50 e-mails por versão),promising(75% ou mais, com o mesmo mínimo),not_significant(menos de 75% com pelo menos 1.800 e-mails por versão) ouinconclusive. Pararevenue, a probabilidade se baseia nos pedidos. -
variants(object[]): por versão,variant_id,name,subject,is_winner,sent,delivered,opened,opened_percent,clicked,clicked_percent,orders,revenueerevenue_per_recipient. Depois que a vencedora é enviada para o resto do público, as contagens da versão vencedora incluem esses e-mails.
Retorna 404 se nenhuma campanha corresponder a id, e 503 quando o armazenamento de análises não estiver disponível.
{
"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"
}Excluir uma campanha
Exclui permanentemente uma campanha. Requer uma chave de API com escopo full. Emite um evento campaign.deleted.
Excluir uma campanha não afeta os e-mails que já foram enviados ou colocados na fila. Para interromper uma campanha em envio, cancele-a primeiro.
/campaigns/{id}Parâmetros de caminho
idstringobrigatóriocmp_…) ou o nome da campanha.Retorno
Retorna object, id, name e deleted: true. Retorna 404 se a campanha não existir.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"deleted": true
}{
"error": "Campaign not found"
}