32 lines
810 B
TypeScript
32 lines
810 B
TypeScript
![]() |
interface EmailServiceProvider {
|
||
|
send: (event: string, recipient: string, context: any) => Promise<Response>;
|
||
|
}
|
||
|
|
||
|
const Klaviyo = (token: string): EmailServiceProvider => ({
|
||
|
send: async (event, recipient, context) => {
|
||
|
const formParams = new URLSearchParams();
|
||
|
formParams.append(
|
||
|
"data",
|
||
|
JSON.stringify({
|
||
|
token,
|
||
|
event,
|
||
|
customer_properties: { $email: recipient },
|
||
|
properties: context,
|
||
|
})
|
||
|
);
|
||
|
|
||
|
console.debug("Klaviyo request: https://a.klaviyo.com/api/track, ", formParams);
|
||
|
|
||
|
const response = await fetch("https://a.klaviyo.com/api/track", {
|
||
|
method: "POST",
|
||
|
body: formParams,
|
||
|
});
|
||
|
|
||
|
console.debug("Klaviyo response: ", response.status, ", ", await response.text());
|
||
|
|
||
|
return response;
|
||
|
},
|
||
|
});
|
||
|
|
||
|
export default Klaviyo;
|