Cakemail Next-gen

Cakemail Next-gen for Developers

Welcome to Cakemail Next-gen for Developers. You'll find comprehensive guides and documentation to help you start working with Cakemail as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Using templates

This page will help you get started with the Template resource

In this guide, you will learn the basics of working with templates in Cakemail.

Create a template

Let's create your first template to get started. To do this, you can call the Create a template endpoint. Review the full API reference for a list of all the parameters you can pass.

curl --request POST \
  --url https://api.cakemail.dev/templates \
  --header 'Accept: application/json' \
  --header 'authorization: Bearer [access token]' \
  --header 'Content-Type: application/json' \
  --data '{"name":"[template name]","content":{"type":"html","html":"[HTML content]"}}'
from cakemail.models import Template, TemplateContent

my_template = api.template.create(
    Template(
        name='<template name>',
        content=TemplateContent(
            type='html',
            html='<HTML content>'
        )
    )
)
<?php

$myTemplate = $api->template->create([
    'template' => new \Cakemail\Lib\Model\Template([
        'name' => '<template name>',
        'content' => new \Cakemail\Lib\Model\TemplateContent([
            'type' => 'html',
            'html' => '<HTML content>'
        ])
    ])
]);

You now have an html template you can use as a starting point for your next campaigns or for sending your transactional emails.

Update a template

Once you have a template, you can update it from time to time by using the Update a template endpoint.

curl --request PATCH \
  --url https://api.cakemail.dev/templates/[template ID] \
  --header 'Accept: application/json' \
  --header 'authorization: Bearer [access token]' \
  --header 'Content-Type: application/json' \
  --data '{"name":"[new template name]"}'
from cakemail.models import PatchTemplate

my_template = api.template.update(
    template_id=my_template.id,
    patch_template=PatchTemplate(
        name='<new template name>',
    )
)
<?php

$myTemplate = $api->template->update([
    'template_id' => $myTemplate['id'],
    'patch_template' => new \Cakemail\Lib\Model\PatchTemplate([
        'name' => '<new template name>'
    ])
])

Next, let's try to use our template in a campaign.

Using a template in a campaign

Now that you have a template, you can use it when creating a new campaign.

curl --request POST \
  --url https://api.cakemail.dev/campaigns \
  --header 'Accept: application/json' \
  --header 'authorization: Bearer [access token]' \
  --header 'Content-Type: application/json' \
  --data '{"name":"<new tempalte name>","content":{"type":"html","template":{"id":[template ID]}}}'
from cakemail.models import CreateCampaign, CampaignContent, TemplateId

my_campaign = api.campaign.create(
    CreateCampaign(
        name='<template name>',
        content=CampaignContent(
            type='html',
            template=TemplateId(id=my_template.id)
        )
    )
)
<?php

$myCampaign = $api->campaign->create([
    'create_campaign' => new \Cakemail\Lib\Model\CreateCampaign([
        'name' => '<template name>',
        'content' => new \Cakemail\Lib\Model\CampaignContent([
            'type' => 'html',
            'template' => new \Cakemail\Lib\Model\TemplateId([
                'id' => $myTemplate['id']
            ])
        ])
    ])
]);

You just created a new campaign using your template.

Using a template with transactional emails

You can also use templates to send transactional emails. Since a template can contain personalization tags, it is possible to also specify custom attributes to be used with the template.

curl --request POST \
  --url https://api.cakemail.dev/emails \
  --header 'Accept: application/json' \
  --header 'authorization: Bearer [access token]' \
  --header 'Content-Type: application/json' \
  --data '{...,"content":{"template":{"id":[template ID],"custom_attributes":[{"name":"name","value":"[contact name]"}]}}}'
from cakemail.models import Email, EmailContent, TemplateInfo, TemplateCustomAttributes

api.transactional_email.send(
    email=Email(
        ...,
        content=EmailContent(
            template=TemplateInfo(
                id=my_template.id,
                custom_attributes=[TemplateCustomAttributes(
                        name='name',
                    value='<contact name>'
                )]
            )
        )
    )
)...,
<?php

$api->transactional_email->send([
    'email' => new \Cakemail\Lib\Model\Email([
        ...,
        'content' => new \Cakemail\Lib\Model\EmailContent([
            'template' => new \Cakemail\Lib\Model\TemplateInfo([
                'id' => $myTemplate['id'],
                'custom_attributes' => [
                    new \Cakemail\Lib\Model\TemplateCustomAttributes([
                        'name' => 'name',
                        'value' => '<contact name>'
                    ])
                ]
            ])
        ])
    ])
]);

You can explore the full API reference for more advanced features in the Asset API.

Updated 6 months ago



Using templates


This page will help you get started with the Template resource

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.