Send transactional emails from your Django project using Loops’ SMTP service.
As Loops’ SMTP service requires sending an API-like email body rather than a full email, it’s not recommended to use Loops as the default SMTP service for your app in your settings file.
Instead, use a custom connection for each email request that you want to send through Loops.
Sending email from Django with Loops’ SMTP service is easy but there’s one gotcha: the email body needs to be an API-like payload.This may seem strange at first but it allows you to use Loops’ WYSIWYG editor to craft your emails and keep email templating outside of your code repo.We are using a custom connection for sending this email as typically only some emails in a project will be sent through Loops.Add these settings to your project (e.g. in an .env file).
Every email sent from Django over Loops SMTP requires a transactional email to be set up in your Loops account. Note the transactionalId value in the email payload.
from django.core.mail import send_mail, get_connectionimport jsonimport oswith get_connection( host=os.environ['LOOPS_SMTP_HOST'], port=os.environ['LOOPS_SMTP_PORT'], username=os.environ['LOOPS_SMTP_USER'], password=os.environ['LOOPS_SMTP_PASSWORD'], use_tls=True # Has to be True) as connection: email = 'test@example.com' # This payload can be copied from a transactional email's # Publish page in Loops payload = { "transactionalId": "clomzp89u635xl30px7wrl0ri", "email": email, "dataVariables": { "buttonUrl": "https://myapp.com/login/", "userName": "Bob" } } send_mail( "Subject here", # Overwritten by Loops template json.dumps(payload), # Stringify the payload "test@example.com", # Overwritten by Loops template [email], fail_silently=False, connection=connection )
Last modified on May 5, 2026
Was this page helpful?
⌘I
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"Loops","description":"Documentation for Loops, the email platform for software companies.","colors":{"primary":"#FC5200","light":"#FC7432","dark":"#DD4800"},"logo":{"light":"https://mintcdn.com/loops/1DdZd7QTRR4Srm-l/logo/light.png?fit=max\u0026auto=format\u0026n=1DdZd7QTRR4Srm-l\u0026q=85\u0026s=af97da0e1eae22a2d70b0e1cae7f0df3","dark":"https://mintcdn.com/loops/1DdZd7QTRR4Srm-l/logo/dark.png?fit=max\u0026auto=format\u0026n=1DdZd7QTRR4Srm-l\u0026q=85\u0026s=72d4e8cd5151301936b7ae8ea69be757"},"favicon":"https://mintcdn.com/loops/Vqx-auiVy74YQr9S/favicon.png?fit=max\u0026auto=format\u0026n=Vqx-auiVy74YQr9S\u0026q=85\u0026s=dbe3e951e74a150874408aee1934e3cf","api":{"playground":{"display":"simple"},"mdx":{"auth":{"method":"bearer"},"server":"https://app.loops.so/api"}},"navbar":{"links":[{"href":"https://app.loops.so/settings?page=support","label":"Contact Us"},{"href":"https://app.loops.so/","label":"Log in"},{"href":"https://loops.so","label":"Loops"}]},"footer":{"socials":{"x":"https://twitter.com/loops","linkedin":"https://www.linkedin.com/company/sendwithloops"}},"seo":{"indexing":"navigable"},"fonts":{"family":"Inter"},"styling":{"codeblocks":"dark","latex":false},"integrations":{"koala":{"publicApiKey":"pk_f2087cde372aa191b0b276a5518bd869acc7"},"amplitude":{"apiKey":"512a2f0d1f22b5c69615cec59d377029"},"ga4":{"measurementId":"G-JSTF27DRRN"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"loops","hasAudioNarration":false,"actualSubdomain":"loops","customDomains":["loops.so"],"gitSource":{"type":"github","owner":"loops-so","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae20f278c406dd2ccb37b9c","collectionId":"85139641-3ca4-494e-9b44-dc7e8d941234","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae20f278c406dd2ccb37b9c"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae20f278c406dd2ccb37b9c","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Learn","count":98},{"language":"default","tag":"API","count":87},{"language":"default","tag":"API Reference","count":72},{"language":"default","tag":"Guides","count":40},{"language":"default","tag":"Integrations","count":32},{"language":"default","tag":"Editing emails","count":25},{"language":"default","tag":"Contacts","count":18},{"language":"default","tag":"CLI","count":18},{"language":"default","tag":"Deliverability","count":18},{"language":"default","tag":"Workflows","count":12}]},"assistantConfig":{"deflection":{"enabled":true,"email":"support@loops.so","showHelpButton":true}},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":".callout code:not(pre code){background-color:rgba(0,0,0,.06);border-color:rgba(0,0,0,.08)}.dark .callout code:not(pre code){background-color:rgba(255,255,255,.09);border-color:rgba(255,255,255,.12)}"}],"page":{"pagePath":"smtp/django","slug":"/smtp/django","pageMetadata":{"title":"Django SMTP","sidebarTitle":"Django","description":"Send transactional emails from your Django project using Loops' SMTP service.","icon":"python","href":"/smtp/django"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Send transactional emails from your Django project using Loops’ SMTP service.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,br:`br`,code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Tip,{children:_jsxs(_components.p,{children:[`As Loops’ SMTP service requires sending an API-like email body rather than a full email, it’s not recommended to use Loops as the default SMTP service for your app in your settings file.`,_jsx(_components.br,{}),`\n`,`Instead, use a custom `,_jsx(_components.code,{children:`connection`}),` for each email request that you want to send through Loops.`]})}),`\n`,_jsxs(_components.p,{children:[`Sending email from Django with Loops’ SMTP service is easy but there’s one gotcha: the email body needs to be an `,_jsx(_components.a,{href:`/smtp#how-it-works`,children:`API-like payload`}),`.`]}),`\n`,_jsx(_components.p,{children:`This may seem strange at first but it allows you to use Loops’ WYSIWYG editor to craft your emails and keep email templating outside of your code repo.`}),`\n`,_jsxs(_components.p,{children:[`We are using a custom `,_jsx(_components.code,{children:`connection`}),` for sending this email as typically only some emails in a project will be sent through Loops.`]}),`\n`,_jsxs(_components.p,{children:[`Add these settings to your project (e.g. in an `,_jsx(_components.code,{children:`.env`}),` file).`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Host`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`smtp.loops.so`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Port number`}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`587`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Username`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`loops`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Password`}),_jsxs(_components.td,{children:[`An API key copied from your `,_jsx(_components.a,{href:`https://app.loops.so/settings?page=api`,children:`API settings`}),` in Loops`]})]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Every email sent from Django over Loops SMTP requires a transactional email to be set up in your Loops account. Note the `,_jsx(_components.code,{children:`transactionalId`}),` value in the email payload.`]})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`33`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`33`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` django.core.mail `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` send_mail, get_connection`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` json`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` os`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`with`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` get_connection(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` host`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=os.environ[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'LOOPS_SMTP_HOST'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` port`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=os.environ[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'LOOPS_SMTP_PORT'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` username`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=os.environ[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'LOOPS_SMTP_USER'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` password`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=os.environ[`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'LOOPS_SMTP_PASSWORD'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` use_tls`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`True`}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:` # Has to be True`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`as`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` connection:`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` email = `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'test@example.com'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:` # This payload can be copied from a transactional email's `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:` # Publish page in Loops`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` payload = {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"transactionalId\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"clomzp89u635xl30px7wrl0ri\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"email\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: email,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"dataVariables\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"buttonUrl\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"https://myapp.com/login/\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"userName\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"Bob\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` send_mail(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"Subject here\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`# Overwritten by Loops template`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` json.dumps(payload), `}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`# Stringify the payload`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` \"test@example.com\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`# Overwritten by Loops template`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` [email],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` fail_silently`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`False`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` connection`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`=connection`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Django SMTP","sidebarTitle":"Django","description":"Send transactional emails from your Django project using Loops' SMTP service.","icon":"python","href":"/smtp/django"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/loops/9f23b55700f99bdb/script.js"],"subdomain":"loops","siteName":"Loops","title":"Django SMTP - Loops","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-05T08:48:43.173Z","gitLastModified":"2026-05-05T08:48:11.000Z","originalFileLocation":"smtp/django.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Send transactional emails from your Django project using Loops\u0026#x27; SMTP service.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Loops\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Django SMTP - Loops\">\u003cmeta data-mint-head property=\"og:description\" content=\"Send transactional emails from your Django project using Loops\u0026#x27; SMTP service.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Loops\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://loops.so/docs/smtp/django\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://loops.mintlify.app/_mintlify/api/og/v2?division=SMTP\u0026amp;title=Django+SMTP\u0026amp;description=Send+transactional+emails+from+your+Django+project+using+Loops%27+SMTP+service.\u0026amp;theme=4d99034fa43c3fda37d2eb26\u0026amp;signature=2ff7e68b46b3a360e6d21d9e3c488649ae5dda6c14bb725664b51e8368229320\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Django SMTP - Loops\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Send transactional emails from your Django project using Loops\u0026#x27; SMTP service.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://loops.mintlify.app/_mintlify/api/og/v2?division=SMTP\u0026amp;title=Django+SMTP\u0026amp;description=Send+transactional+emails+from+your+Django+project+using+Loops%27+SMTP+service.\u0026amp;theme=4d99034fa43c3fda37d2eb26\u0026amp;signature=2ff7e68b46b3a360e6d21d9e3c488649ae5dda6c14bb725664b51e8368229320\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/loops/oQA_4tr5jYF-tv7z/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Loops\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FC5200\">\u003clink data-mint-head rel=\"canonical\" href=\"https://loops.so/docs/smtp/django\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/smtp/django.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://loops.so/#organization\",\"name\":\"Loops\",\"url\":\"https://loops.so\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/loops/1DdZd7QTRR4Srm-l/logo/light.png?fit=max\u0026auto=format\u0026n=1DdZd7QTRR4Srm-l\u0026q=85\u0026s=af97da0e1eae22a2d70b0e1cae7f0df3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://loops.so/docs#website\",\"name\":\"Loops\",\"url\":\"https://loops.so/docs\",\"publisher\":{\"@id\":\"https://loops.so/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://loops.so/docs/smtp/django#webpage\",\"url\":\"https://loops.so/docs/smtp/django\",\"name\":\"Django SMTP\",\"description\":\"Send transactional emails from your Django project using Loops' SMTP service.\",\"dateModified\":\"2026-05-05T08:48:11.000Z\",\"isPartOf\":{\"@id\":\"https://loops.so/docs#website\"},\"breadcrumb\":{\"@id\":\"https://loops.so/docs/smtp/django#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://loops.so/docs/smtp/django#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Learn\",\"item\":\"https://loops.so/docs/quickstart\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SMTP\",\"item\":\"https://loops.so/docs/smtp\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Django SMTP\",\"item\":\"https://loops.so/docs/smtp/django\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://loops.so/docs/smtp/django#article\",\"headline\":\"Django SMTP\",\"name\":\"Django SMTP\",\"description\":\"Send transactional emails from your Django project using Loops' SMTP service.\",\"url\":\"https://loops.so/docs/smtp/django\",\"mainEntityOfPage\":{\"@id\":\"https://loops.so/docs/smtp/django#webpage\"},\"dateModified\":\"2026-05-05T08:48:11.000Z\",\"publisher\":{\"@id\":\"https://loops.so/#organization\"},\"isPartOf\":{\"@id\":\"https://loops.so/docs#website\"}}]}\u003c/script>","siteName":"Loops","nav":{"global":null,"groups":[{"group":"Learn","pages":[{"group":"Get started","pages":[{"title":"Quickstart","sidebarTitle":"Human quickstart","icon":"user","href":"/quickstart"},{"title":"Quickstart for agents","sidebarTitle":"Agent quickstart","icon":"robot","href":"/quickstart-agents"},{"title":"Setting up your domain","icon":"globe","href":"/sending-domain"},{"title":"Types of emails","icon":"envelopes-bulk","href":"/types-of-emails"},{"title":"Sending your first email","icon":"mailbox","href":"/sending-first-email"}]},{"group":"Editing emails","pages":[{"title":"The editor","icon":"keyboard","href":"/creating-emails/editor"},{"title":"LMX","icon":"square-code","href":"/creating-emails/lmx"},{"group":"Adding content","icon":"square-plus","pages":[{"title":"Images","icon":"image","href":"/creating-emails/editor/images"},{"title":"Videos","icon":"video","href":"/creating-emails/editor/videos"},{"title":"Links","icon":"link","href":"/creating-emails/editor/links"},{"title":"Buttons","icon":"rectangle-minus","href":"/creating-emails/editor/buttons"},{"title":"Social icons","icon":"star","href":"/creating-emails/editor/social-icons"},{"title":"Dividers","icon":"minus","href":"/creating-emails/editor/dividers"},{"title":"Columns","icon":"columns","href":"/creating-emails/editor/columns"},{"title":"Sections","icon":"rectangle-list","href":"/creating-emails/editor/sections"},{"title":"Arrays","icon":"bars","href":"/creating-emails/editor/arrays"},{"title":"Markdown","icon":"markdown","href":"/creating-emails/editor/markdown"},{"title":"Code blocks","icon":"code","href":"/creating-emails/editor/code-blocks"}]},{"title":"Components","icon":"shapes","href":"/creating-emails/components"},{"title":"Styling emails","icon":"palette","href":"/creating-emails/styles"},{"title":"Personalizing emails","icon":"crystal-ball","href":"/creating-emails/personalizing-emails"},{"title":"Guardian","icon":"badge-check","href":"/creating-emails/guardian"},{"title":"Uploading a custom email","icon":"arrow-up-from-bracket","sidebarTitle":"Upload a custom email","href":"/creating-emails/uploading-custom-email"},{"title":"Sending settings","icon":"pen-field","href":"/creating-emails/sending-settings"},{"title":"Critical notices","icon":"triangle-exclamation","href":"/creating-emails/critical-notices"},{"title":"Duplicating emails","icon":"copy","href":"/creating-emails/duplicating-emails"},{"title":"Font support","icon":"fonticons","href":"/creating-emails/font-support"},{"title":"Translating emails","icon":"globe","href":"/creating-emails/translating-emails-with-ai"},{"title":"Using templates","icon":"table-layout","href":"/creating-emails/using-templates"},{"title":"Delete emails","icon":"trash","href":"/creating-emails/deleting-emails"}]},{"group":"Workflows","pages":[{"title":"Workflows","sidebarTitle":"Guide","icon":"arrows-rotate","href":"/workflows"},{"title":"Triggering workflows","icon":"circle-play","href":"/workflows/triggers"},{"title":"Pausing workflows","icon":"pause","href":"/workflows/pausing"},{"title":"Branching workflows","icon":"code-branch","href":"/workflows/branching"},{"title":"Experiments","icon":"vial","href":"/workflows/experiments"}]},{"group":"Events","pages":[{"title":"Events: trigger automated emails with Loops","sidebarTitle":"Guide","icon":"bolt","href":"/events"},{"title":"Event properties","icon":"book-sparkles","href":"/events/properties"}]},{"group":"Goals","pages":[{"title":"Overview","href":"/goals/overview"},{"title":"Building your first goal","href":"/goals/building"},{"title":"Understanding metrics","href":"/goals/metrics"}]},{"group":"Contacts","pages":[{"group":"Add contacts","icon":"user-plus","pages":[{"title":"CSV Upload","href":"/add-users/csv-upload"},{"title":"Add contacts via integrations","sidebarTitle":"Integrations","href":"/add-users/integrations"},{"title":"Add and update contacts with the Loops API","sidebarTitle":"API","href":"/add-users/loops-api"}]},{"title":"Double opt-in","icon":"shield-check","href":"/contacts/double-opt-in"},{"title":"List management","icon":"list","href":"/contacts/mailing-lists"},{"title":"Filters and Segments","icon":"filter-list","href":"/contacts/filters-segments"},{"title":"Contact properties","icon":"address-book","href":"/contacts/properties"},{"title":"Contact activity timeline","icon":"bars-staggered","href":"/contacts/contact-activity"},{"title":"Email blocklist","icon":"ban","href":"/contacts/email-blocklist"},{"title":"Contact suppression","icon":"circle-xmark","href":"/contacts/suppression"},{"title":"Delete contacts","icon":"user-minus","href":"/contacts/delete-contacts"},{"title":"Export contacts","icon":"file-export","href":"/contacts/export-contacts"}]},{"group":"Transactional email","pages":[{"title":"Transactional email","sidebarTitle":"Guide","icon":"envelope","href":"/transactional"},{"title":"Attachments","icon":"paperclip","href":"/transactional/attachments"}]},{"group":"Integrations","pages":[{"title":"Integrations","sidebarTitle":"Overview","icon":"arrows-turn-right","href":"/integrations"},{"group":"Forms","icon":"table-list","pages":[{"title":"Simple form","href":"/forms/simple-form"},{"title":"Custom form","href":"/forms/custom-form"}]},{"title":"Incoming webhooks","icon":"webhook","href":"/integrations/incoming-webhooks"},{"title":"Auto BCC","icon":"eye-slash","href":"/integrations/auto-bcc"},{"title":"Attio","href":"/integrations/attio"},{"title":"Auth0 integration","sidebarTitle":"Auth0","href":"/integrations/auth0"},{"title":"Auth.js","href":"/integrations/authjs"},{"title":"Better Auth","href":"/integrations/better-auth"},{"title":"Bubble integration","sidebarTitle":"Bubble","href":"/integrations/bubble"},{"title":"Carrd integration","sidebarTitle":"Carrd","href":"/integrations/carrd"},{"title":"Clay integration","sidebarTitle":"Clay","href":"/integrations/clay"},{"title":"Clerk integration","sidebarTitle":"Clerk","href":"/integrations/clerk"},{"title":"Fivetran integration","sidebarTitle":"Fivetran","href":"/integrations/fivetran"},{"title":"Framer integration","sidebarTitle":"Framer","href":"/integrations/framer"},{"title":"Integrately","href":"/integrations/integrately"},{"title":"Novu integration","sidebarTitle":"Novu","href":"/integrations/novu"},{"title":"Make integration","sidebarTitle":"Make","href":"/integrations/make"},{"title":"Polar","href":"/integrations/polar"},{"title":"PostHog","href":"/integrations/posthog"},{"title":"RudderStack","href":"/integrations/rudderstack"},{"title":"Segment","href":"/integrations/segment"},{"title":"Stripe integration","sidebarTitle":"Stripe","href":"/integrations/stripe"},{"group":"Supabase","pages":[{"title":"Supabase","sidebarTitle":"Overview","href":"/integrations/supabase"},{"title":"Supabase - Sync contacts","sidebarTitle":"Sync contacts","href":"/integrations/supabase/contact-sync"},{"title":"Supabase - Send emails","sidebarTitle":"Send emails","href":"/integrations/supabase/send-email"}]},{"title":"Webflow integration","sidebarTitle":"Webflow","href":"/integrations/webflow"},{"title":"Zapier integration","sidebarTitle":"Zapier","href":"/integrations/zapier"}]},{"group":"SMTP","pages":[{"title":"Send with SMTP","description":"Send Loops emails over SMTP.","sidebarTitle":"Overview","icon":"envelopes","href":"/smtp"},{"title":"Django SMTP","sidebarTitle":"Django","icon":"python","href":"/smtp/django"},{"title":"Laravel","description":"Send transactional emails from your Laravel project using Loops' SMTP service.","icon":"laravel","href":"/smtp/laravel"},{"title":"Ruby on Rails","icon":"gem","href":"/smtp/rails"},{"title":"Supabase SMTP","sidebarTitle":"Supabase","icon":"bolt","href":"/smtp/supabase"}]},{"group":"Account","pages":[{"title":"Change your login email","icon":"user-gear","href":"/account/changing-your-email"},{"title":"Team members","icon":"users","href":"/account/team-members"},{"title":"Team switcher","icon":"arrow-up-arrow-down","href":"/account/team-switcher"},{"title":"Billing","icon":"file-invoice-dollar","href":"/account/billing"},{"title":"Group billing","icon":"layer-group","href":"/account/group-billing"},{"title":"Notifications","icon":"bell","href":"/account/notifications"},{"title":"Delete your account","icon":"user-xmark","href":"/account/delete-account"}]},{"title":"Agent skills for Loops","sidebarTitle":"Agent skills","href":"/skills"},{"title":"Loops MCP server","sidebarTitle":"MCP","href":"/mcp-server"},{"title":"Security and Vulnerability Reporting","sidebarTitle":"Security","href":"/security-reporting"},{"title":"Security and Compliance","sidebarTitle":"Compliance","href":"/security-compliance"}]},{"group":"API","pages":[{"title":"API Introduction","href":"/api-reference/intro"},{"group":"API Reference","pages":[{"group":"API key","pages":[{"title":"API key","deprecated":null,"version":null,"sidebarTitle":"Api key","openapi":"https://app.loops.so/openapi.json get /v1/api-key","href":"/api-reference/api-key"}]},{"group":"Audience segments","pages":[{"title":"Get an audience segment","deprecated":null,"version":null,"sidebarTitle":"Get a segment","openapi":"https://app.loops.so/openapi.json get /v1/audience-segments/{audienceSegmentId}","href":"/api-reference/get-audience-segment"},{"title":"List audience segments","deprecated":null,"version":null,"sidebarTitle":"List segments","openapi":"https://app.loops.so/openapi.json get /v1/audience-segments","href":"/api-reference/list-audience-segments"},{"title":"Create an audience segment","deprecated":null,"version":null,"sidebarTitle":"Create a segment","openapi":"https://app.loops.so/openapi.json post /v1/audience-segments","href":"/api-reference/create-audience-segment"}]},{"group":"Campaigns","pages":[{"title":"List campaigns","deprecated":null,"version":null,"sidebarTitle":"List campaigns","openapi":"https://app.loops.so/openapi.json get /v1/campaigns","href":"/api-reference/list-campaigns"},{"title":"Create a campaign","deprecated":null,"version":null,"sidebarTitle":"Create campaign","openapi":"https://app.loops.so/openapi.json post /v1/campaigns","href":"/api-reference/create-campaign"},{"title":"Get a campaign","deprecated":null,"version":null,"sidebarTitle":"Get campaign","openapi":"https://app.loops.so/openapi.json get /v1/campaigns/{campaignId}","href":"/api-reference/get-campaign"},{"title":"Update a campaign","deprecated":null,"version":null,"sidebarTitle":"Update campaign","openapi":"https://app.loops.so/openapi.json post /v1/campaigns/{campaignId}","href":"/api-reference/update-campaign"},{"title":"Get campaign metrics","deprecated":null,"version":null,"sidebarTitle":"Get metrics","openapi":"https://app.loops.so/openapi.json get /v1/campaigns/{campaignId}/metrics","href":"/api-reference/get-campaign-metrics"}]},{"group":"Campaign groups","pages":[{"title":"List campaign groups","deprecated":null,"version":null,"sidebarTitle":"List groups","openapi":"https://app.loops.so/openapi.json get /v1/campaign-groups","href":"/api-reference/list-campaign-groups"},{"title":"Create a campaign group","deprecated":null,"version":null,"sidebarTitle":"Create a group","openapi":"https://app.loops.so/openapi.json post /v1/campaign-groups","href":"/api-reference/create-campaign-group"},{"title":"Get a campaign group","deprecated":null,"version":null,"sidebarTitle":"Get a group","openapi":"https://app.loops.so/openapi.json get /v1/campaign-groups/{campaignGroupId}","href":"/api-reference/get-campaign-group"},{"title":"Update a campaign group","deprecated":null,"version":null,"sidebarTitle":"Update a group","openapi":"https://app.loops.so/openapi.json post /v1/campaign-groups/{campaignGroupId}","href":"/api-reference/update-campaign-group"}]},{"group":"Configuration","pages":[{"title":"List dedicated sending IP addresses","deprecated":null,"version":null,"sidebarTitle":"List sending IPs","openapi":"https://app.loops.so/openapi.json get /v1/dedicated-sending-ips","href":"/api-reference/dedicated-sending-ips"}]},{"group":"Contacts","pages":[{"title":"Create a contact","deprecated":null,"version":null,"sidebarTitle":"Create contact","openapi":"https://app.loops.so/openapi.json post /v1/contacts/create","href":"/api-reference/create-contact"},{"title":"Update a contact","deprecated":null,"version":null,"sidebarTitle":"Update a contact","openapi":"https://app.loops.so/openapi.json put /v1/contacts/update","href":"/api-reference/update-contact"},{"title":"Find a contact","deprecated":null,"version":null,"sidebarTitle":"Find contact","openapi":"https://app.loops.so/openapi.json get /v1/contacts/find","href":"/api-reference/find-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"sidebarTitle":"Delete a contact","openapi":"https://app.loops.so/openapi.json post /v1/contacts/delete","href":"/api-reference/delete-contact"},{"title":"Check contact suppression status","deprecated":null,"version":null,"sidebarTitle":"Check suppression","openapi":"https://app.loops.so/openapi.json get /v1/contacts/suppression","href":"/api-reference/check-contact-suppression"},{"title":"Remove contact from suppression","deprecated":null,"version":null,"sidebarTitle":"Remove suppression","openapi":"https://app.loops.so/openapi.json delete /v1/contacts/suppression","href":"/api-reference/remove-contact-suppression"}]},{"group":"Contact properties","pages":[{"title":"List contact properties","deprecated":null,"version":null,"sidebarTitle":"List properties","openapi":"https://app.loops.so/openapi.json get /v1/contacts/properties","href":"/api-reference/list-contact-properties"},{"title":"Create a contact property","deprecated":null,"version":null,"sidebarTitle":"Create property","openapi":"https://app.loops.so/openapi.json post /v1/contacts/properties","href":"/api-reference/create-contact-property"}]},{"group":"Components","pages":[{"title":"Get a component","deprecated":null,"version":null,"sidebarTitle":"Get component","openapi":"https://app.loops.so/openapi.json get /v1/components/{componentId}","href":"/api-reference/get-component"},{"title":"Update a component","deprecated":null,"version":null,"sidebarTitle":"Update component","openapi":"https://app.loops.so/openapi.json post /v1/components/{componentId}","href":"/api-reference/update-component"},{"title":"List components","deprecated":null,"version":null,"sidebarTitle":"List components","openapi":"https://app.loops.so/openapi.json get /v1/components","href":"/api-reference/list-components"},{"title":"Create a component","deprecated":null,"version":null,"sidebarTitle":"Create component","openapi":"https://app.loops.so/openapi.json post /v1/components","href":"/api-reference/create-component"}]},{"group":"Email messages","pages":[{"title":"Get an email message","deprecated":null,"version":null,"sidebarTitle":"Get an email","openapi":"https://app.loops.so/openapi.json get /v1/email-messages/{emailMessageId}","href":"/api-reference/get-email-message"},{"title":"Update an email message","deprecated":null,"version":null,"sidebarTitle":"Update an email","openapi":"https://app.loops.so/openapi.json post /v1/email-messages/{emailMessageId}","href":"/api-reference/update-email-message"},{"title":"Send a preview of an email message","deprecated":null,"version":null,"sidebarTitle":"Preview email","openapi":"https://app.loops.so/openapi.json post /v1/email-messages/{emailMessageId}/preview","href":"/api-reference/preview-email-message"},{"title":"Run Guardian checks on an email message","deprecated":null,"version":null,"sidebarTitle":"Guardian checks","openapi":"https://app.loops.so/openapi.json get /v1/email-messages/{emailMessageId}/guardian","href":"/api-reference/run-guardian-checks"}]},{"group":"Events","pages":[{"title":"Send an event","deprecated":null,"version":null,"sidebarTitle":"Send event","openapi":"https://app.loops.so/openapi.json post /v1/events/send","href":"/api-reference/send-event"}]},{"group":"Event patterns","pages":[{"title":"List event patterns","deprecated":null,"version":null,"sidebarTitle":"List event patterns","openapi":"https://app.loops.so/openapi.json get /v1/event-patterns","href":"/api-reference/list-event-patterns"},{"title":"Get an event pattern by name","deprecated":null,"version":null,"sidebarTitle":"Get by name","openapi":"https://app.loops.so/openapi.json get /v1/event-patterns/by-name/{eventName}","href":"/api-reference/get-event-pattern-by-name"},{"title":"Get an event pattern by ID","deprecated":null,"version":null,"sidebarTitle":"Get by ID","openapi":"https://app.loops.so/openapi.json get /v1/event-patterns/{eventPatternId}","href":"/api-reference/get-event-pattern"}]},{"group":"Mailing lists","pages":[{"title":"List mailing lists","deprecated":null,"version":null,"sidebarTitle":"List mailing lists","openapi":"https://app.loops.so/openapi.json get /v1/lists","href":"/api-reference/list-mailing-lists"}]},{"group":"Themes","pages":[{"title":"Get a theme","deprecated":null,"version":null,"sidebarTitle":"Get theme","openapi":"https://app.loops.so/openapi.json get /v1/themes/{themeId}","href":"/api-reference/get-theme"},{"title":"Update a theme","deprecated":null,"version":null,"sidebarTitle":"Update theme","openapi":"https://app.loops.so/openapi.json post /v1/themes/{themeId}","href":"/api-reference/update-theme"},{"title":"List themes","deprecated":null,"version":null,"sidebarTitle":"List themes","openapi":"https://app.loops.so/openapi.json get /v1/themes","href":"/api-reference/list-themes"},{"title":"Create a theme","deprecated":null,"version":null,"sidebarTitle":"Create theme","openapi":"https://app.loops.so/openapi.json post /v1/themes","href":"/api-reference/create-theme"}]},{"group":"Transactional emails","pages":[{"title":"List transactional emails (legacy)","deprecated":true,"version":null,"sidebarTitle":"List transactionals (legacy)","openapi":"https://app.loops.so/openapi.json get /v1/transactional","href":"/api-reference/list-transactional-emails-v1"},{"title":"Send a transactional email","deprecated":null,"version":null,"sidebarTitle":"Send transactional","openapi":"https://app.loops.so/openapi.json post /v1/transactional","href":"/api-reference/send-transactional-email"},{"title":"List transactional emails","deprecated":null,"version":null,"sidebarTitle":"List transactionals","openapi":"https://app.loops.so/openapi.json get /v1/transactional-emails","href":"/api-reference/list-transactional-emails"},{"title":"Create a transactional email","deprecated":null,"version":null,"sidebarTitle":"Create transactional","openapi":"https://app.loops.so/openapi.json post /v1/transactional-emails","href":"/api-reference/create-transactional-email"},{"title":"Get a transactional email","deprecated":null,"version":null,"sidebarTitle":"Get transactional","openapi":"https://app.loops.so/openapi.json get /v1/transactional-emails/{transactionalId}","href":"/api-reference/get-transactional-email"},{"title":"Update a transactional email","deprecated":null,"version":null,"sidebarTitle":"Update transactional","openapi":"https://app.loops.so/openapi.json post /v1/transactional-emails/{transactionalId}","href":"/api-reference/update-transactional-email"},{"title":"Get transactional email metrics","deprecated":null,"version":null,"sidebarTitle":"Get metrics","openapi":"https://app.loops.so/openapi.json get /v1/transactional-emails/{transactionalId}/metrics","href":"/api-reference/get-transactional-email-metrics"},{"title":"Ensure a transactional email has a draft","deprecated":null,"version":null,"sidebarTitle":"Ensure draft","openapi":"https://app.loops.so/openapi.json post /v1/transactional-emails/{transactionalId}/draft","href":"/api-reference/ensure-transactional-draft"},{"title":"Publish a transactional email","deprecated":null,"version":null,"sidebarTitle":"Publish transactional","openapi":"https://app.loops.so/openapi.json post /v1/transactional-emails/{transactionalId}/publish","href":"/api-reference/publish-transactional-email"}]},{"group":"Transactional groups","pages":[{"title":"List transactional groups","deprecated":null,"version":null,"sidebarTitle":"List groups","openapi":"https://app.loops.so/openapi.json get /v1/transactional-groups","href":"/api-reference/list-transactional-groups"},{"title":"Create a transactional group","deprecated":null,"version":null,"sidebarTitle":"Create a group","openapi":"https://app.loops.so/openapi.json post /v1/transactional-groups","href":"/api-reference/create-transactional-group"},{"title":"Get a transactional group","deprecated":null,"version":null,"sidebarTitle":"Get a group","openapi":"https://app.loops.so/openapi.json get /v1/transactional-groups/{transactionalGroupId}","href":"/api-reference/get-transactional-group"},{"title":"Update a transactional group","deprecated":null,"version":null,"sidebarTitle":"Update a group","openapi":"https://app.loops.so/openapi.json post /v1/transactional-groups/{transactionalGroupId}","href":"/api-reference/update-transactional-group"}]},{"group":"Uploads","pages":[{"title":"Create an upload","deprecated":null,"version":null,"sidebarTitle":"Create an upload","openapi":"https://app.loops.so/openapi.json post /v1/uploads","href":"/api-reference/create-upload"},{"title":"Complete an upload","deprecated":null,"version":null,"sidebarTitle":"Complete upload","openapi":"https://app.loops.so/openapi.json post /v1/uploads/{emailAssetId}/complete","href":"/api-reference/complete-upload"}]},{"group":"Workflow groups","pages":[{"title":"List workflow groups","deprecated":null,"version":null,"sidebarTitle":"List groups","openapi":"https://app.loops.so/openapi.json get /v1/workflow-groups","href":"/api-reference/list-workflow-groups"},{"title":"Create a workflow group","deprecated":null,"version":null,"sidebarTitle":"Create a group","openapi":"https://app.loops.so/openapi.json post /v1/workflow-groups","href":"/api-reference/create-workflow-group"},{"title":"Get a workflow group","deprecated":null,"version":null,"sidebarTitle":"Get a group","openapi":"https://app.loops.so/openapi.json get /v1/workflow-groups/{workflowGroupId}","href":"/api-reference/get-workflow-group"},{"title":"Update a workflow group","deprecated":null,"version":null,"sidebarTitle":"Update a group","openapi":"https://app.loops.so/openapi.json post /v1/workflow-groups/{workflowGroupId}","href":"/api-reference/update-workflow-group"}]},{"group":"Workflows","pages":[{"title":"List workflows","deprecated":null,"version":null,"sidebarTitle":"List workflows","openapi":"https://app.loops.so/openapi.json get /v1/workflows","href":"/api-reference/list-workflows"},{"title":"Create a workflow","deprecated":null,"version":null,"sidebarTitle":"Create workflow","openapi":"https://app.loops.so/openapi.json post /v1/workflows","href":"/api-reference/create-workflow"},{"title":"Get a workflow","deprecated":null,"version":null,"sidebarTitle":"Get workflow","openapi":"https://app.loops.so/openapi.json get /v1/workflows/{workflowId}","href":"/api-reference/get-workflow"},{"title":"Update a workflow","deprecated":null,"version":null,"sidebarTitle":"Update workflow","openapi":"https://app.loops.so/openapi.json post /v1/workflows/{workflowId}","href":"/api-reference/update-workflow"},{"title":"Delete a workflow","deprecated":null,"version":null,"sidebarTitle":"Delete a workflow","openapi":"https://app.loops.so/openapi.json delete /v1/workflows/{workflowId}","href":"/api-reference/delete-workflow"},{"title":"Change workflow mailing list","deprecated":null,"version":null,"sidebarTitle":"Change mailing list","openapi":"https://app.loops.so/openapi.json post /v1/workflows/{workflowId}/mailing-list","href":"/api-reference/change-workflow-mailing-list"}]},{"group":"Workflow nodes","pages":[{"title":"Create a workflow node","deprecated":null,"version":null,"sidebarTitle":"Create a node","openapi":"https://app.loops.so/openapi.json post /v1/workflows/{workflowId}/nodes","href":"/api-reference/create-workflow-node"},{"title":"Add a branch","deprecated":null,"version":null,"sidebarTitle":"Add a branch","openapi":"https://app.loops.so/openapi.json post /v1/workflows/{workflowId}/nodes/{nodeId}/add-branch","href":"/api-reference/add-workflow-branch"},{"title":"Get a workflow node","deprecated":null,"version":null,"sidebarTitle":"Get a node","openapi":"https://app.loops.so/openapi.json get /v1/workflows/{workflowId}/nodes/{nodeId}","href":"/api-reference/get-workflow-node"},{"title":"Update a workflow node","deprecated":null,"version":null,"sidebarTitle":"Update a node","openapi":"https://app.loops.so/openapi.json post /v1/workflows/{workflowId}/nodes/{nodeId}","href":"/api-reference/update-workflow-node"},{"title":"Delete a workflow node","deprecated":null,"version":null,"sidebarTitle":"Delete a node","openapi":"https://app.loops.so/openapi.json delete /v1/workflows/{workflowId}/nodes/{nodeId}","href":"/api-reference/delete-workflow-node"},{"title":"Get workflow node metrics","deprecated":null,"version":null,"sidebarTitle":"Get metrics","openapi":"https://app.loops.so/openapi.json get /v1/workflows/{workflowId}/nodes/{nodeId}/metrics","href":"/api-reference/get-workflow-node-metrics"},{"title":"Reroute a node connection","deprecated":null,"version":null,"sidebarTitle":"Reroute a node","openapi":"https://app.loops.so/openapi.json post /v1/workflows/{workflowId}/nodes/{nodeId}/reroute","href":"/api-reference/reroute-node-connection"},{"title":"Delete workflow nodes recursively","deprecated":null,"version":null,"sidebarTitle":"Delete nodes","openapi":"https://app.loops.so/openapi.json delete /v1/workflows/{workflowId}/nodes/{nodeId}/recursive","href":"/api-reference/delete-workflow-nodes"}]}]},{"group":"Examples","pages":[{"title":"API Examples","href":"/api-reference/examples"},{"title":"Campaigns API examples","sidebarTitle":"Campaigns","href":"/api-reference/examples/campaigns"},{"title":"Contacts API examples","sidebarTitle":"Contacts","href":"/api-reference/examples/contacts"},{"title":"Events API examples","sidebarTitle":"Events","href":"/api-reference/examples/events"},{"title":"Transactional email API examples","sidebarTitle":"Transactional emails","href":"/api-reference/examples/transactional-emails"},{"title":"Workflows API examples","sidebarTitle":"Workflows","href":"/api-reference/examples/workflows"}]},{"group":"SDKs","pages":[{"title":"Loops SDKs","sidebarTitle":"Overview","href":"/sdks"},{"title":"Go SDK","sidebarTitle":"Go","icon":"golang","href":"/sdks/go"},{"title":"JavaScript SDK","sidebarTitle":"JavaScript","icon":"js","href":"/sdks/javascript"},{"title":"Nuxt module","sidebarTitle":"Nuxt","icon":"mountains","href":"/sdks/nuxt"},{"title":"PHP SDK","sidebarTitle":"PHP","icon":"php","href":"/sdks/php"},{"title":"Ruby SDK","sidebarTitle":"Ruby","icon":"gem","href":"/sdks/ruby"}]},{"title":"Webhooks","href":"/webhooks"},{"title":"API Changelog","href":"/api-reference/changelog"}]},{"group":"CLI","pages":[{"title":"Loops CLI","sidebarTitle":"Overview","href":"/cli"},{"title":"Audience segments","href":"/cli/audience-segments"},{"title":"Auth","href":"/cli/auth"},{"title":"Campaign groups","href":"/cli/campaign-groups"},{"title":"Campaigns","href":"/cli/campaigns"},{"title":"Completion","href":"/cli/completion"},{"title":"Components","href":"/cli/components"},{"title":"Contact properties","href":"/cli/contact-properties"},{"title":"Contacts","href":"/cli/contacts"},{"title":"Email messages","href":"/cli/email-messages"},{"title":"Event patterns","href":"/cli/event-patterns"},{"title":"Events","href":"/cli/events"},{"title":"Lists","href":"/cli/lists"},{"title":"Themes","href":"/cli/themes"},{"title":"Transactional","href":"/cli/transactional"},{"title":"Transactional groups","href":"/cli/transactional-groups"},{"title":"Uploads","href":"/cli/uploads"},{"title":"Workflows","href":"/cli/workflows"}]},{"group":"Guides","pages":[{"title":"Guides for onboarding, deliverability, and lifecycle emails.","sidebarTitle":"All guides","href":"/guides/intro"},{"group":"Getting started","pages":[{"title":"Create and send your first campaign with the API or an agent","sidebarTitle":"First campaign via API","href":"/guides/first-campaign-api"},{"title":"Your first onboarding emails","href":"/guides/onboarding-emails"}]},{"group":"Workflows","pages":[{"title":"Retrigger a Workflow","href":"/guides/retroactively-trigger-workflow"}]},{"group":"Deliverability","pages":[{"title":"Reducing product email bounce rate","sidebarTitle":"Reducing bounce rate","href":"/deliverability/reducing-bounce-rate"},{"title":"DMARC and DKIM setup","sidebarTitle":"DMARC and DKIM","href":"/deliverability/dmarc-dkim-setup"},{"title":"DNS zone file export","sidebarTitle":"DNS zone file export","href":"/deliverability/dns-zone-file-export"},{"title":"Shortened YouTube links warning","href":"/deliverability/youtube-links-warning"},{"title":"Deliverability optimization","href":"/deliverability/optimization"},{"title":"Improve your inbox placement","href":"/deliverability/improving-inbox-placement"},{"title":"Sending to large audiences","href":"/deliverability/sending-to-large-audience"},{"title":"Sending legally mandated email","href":"/deliverability/legally-mandated-email"},{"title":"Subdomains vs root domains","href":"/deliverability/sending-from-subdomain"},{"title":"Building your sender reputation","href":"/deliverability/sending-reputation"},{"title":"Sending transactional emails to group inboxes","sidebarTitle":"Send transactional emails to group inboxes","href":"/deliverability/transactional-group-inboxes"},{"title":"Insights from Google Postmaster","href":"/deliverability/gaining-insights"},{"title":"Email open rates","href":"/deliverability/understanding-email-open-rates"},{"title":"Add a sending avatar","href":"/deliverability/adding-a-sending-avatar"},{"title":"Maintaining a clean list","href":"/deliverability/maintaining-a-clean-list"},{"title":"Sending emails to Apple “Hide my email” addresses","sidebarTitle":"Send to “Hide my email” addresses","href":"/deliverability/apple-hide-my-email"},{"title":"Sending from multiple domains","href":"/deliverability/sending-from-multiple-domains"},{"title":"Migrating domains","href":"/deliverability/migrating-domains"}]},{"group":"Integrations","pages":[{"title":"Set up Loops in Next.js","sidebarTitle":"Next.js guide","href":"/guides/nextjs"},{"title":"Send emails from Bolt.new","href":"/guides/bolt-emails"},{"title":"Bubble API Connector","href":"/guides/bubble-api-connector"},{"title":"Set up a welcome email sequence for new Ghost members","sidebarTitle":"Email sequence for Ghost","href":"/guides/ghost-email-sequence"}]},{"group":"Creating emails","pages":[{"title":"How to resend a campaign to contacts who haven't received it","sidebarTitle":"Send to new subscribers again","href":"/guides/send-again"},{"title":"Why we don't support HTML emails","href":"/guides/html-emails"},{"title":"Dark mode support in emails","href":"/guides/email-dark-mode"}]},{"group":"Recipes","pages":[{"title":"Recipe: Onboarding completion workflow","sidebarTitle":"Onboarding completion","href":"/guides/onboarding-completion"},{"title":"Recipe: Churn risk segment and re-engagement workflow","sidebarTitle":"Churn risk re-engagement","href":"/guides/churn-risk-segment"},{"title":"Recipe: Active 30-day users segment","sidebarTitle":"Active 30-day users","href":"/guides/active-30-day-users"},{"title":"Recipe: Upgrade upsell workflow","sidebarTitle":"Upgrade upsell","href":"/guides/upgrade-upsell"},{"title":"Recipe: SaaS customer lifecycle emails","sidebarTitle":"Lifecycle emails","href":"/guides/lifecycle-emails"},{"title":"Recipe: Scheduled digest email","sidebarTitle":"Scheduled digest","href":"/guides/scheduled-digest-email"},{"title":"Recipe: Product updates","sidebarTitle":"Product updates","href":"/guides/product-updates"}]},{"group":"Email basics","pages":[{"title":"What is DNS?","href":"/guides/what-is-dns"},{"title":"What is BIMI?","href":"/guides/what-is-bimi"},{"title":"Open rates are a vanity metric","href":"/guides/open-rates"},{"title":"Transactional vs marketing email","sidebarTitle":"Transactional vs marketing","href":"/guides/transactional-vs-marketing-email"}]}]}]},"basePath":"","title":"Django SMTP - Loops","buildId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","deploymentId":"dpl_4RHMRqtvdHvKgaEfTTjFqjzja3B6","dynamics":[],"chunks":[]}