Zum Hauptinhalt springen

Einführung

Senden Sie automatisch professionelle transaktionale E-Mails, wenn Zahlungs- und Abonnementereignisse auftreten. Übermitteln Sie Zahlungsbestätigungen, Abonnement-Updates und Fehlerbenachrichtigungen über Keplars, ohne dass ein Middleware-Server erforderlich ist. Dodo Payments ruft die Keplars API direkt mit einem JavaScript-Transformation Handler auf.
Diese Integration erfordert Ihren Keplars API-Schlüssel zur Authentifizierung. Finden Sie ihn im Keplars-Dashboard unter Einstellungen → API-Schlüssel, und verifizieren Sie eine Senderdomain oder -adresse unter Domains.

Erste Schritte

1

Open the Webhook Section

Navigieren Sie in Ihrem Dodo Payments-Dashboard zu Webhooks → + Endpunkt hinzufügen und erweitern Sie das Integrations-Dropdown.
2

Select Keplars

Wählen Sie die Keplars-Integrationskarte.
Wählen Sie die Keplars-Integrationskarte
3

Enter API Key

Geben Sie Ihren Keplars API-Schlüssel ein. Dieser wird als Bearer-Token bei jeder Anfrage gesendet.
Geben Sie die Keplars API-URL, den API-Schlüssel ein und abonnieren Sie Ereignisse
4

Configure Transformation

Bearbeiten Sie den Transformation-Code, um E-Mails für Keplars zu formatieren. Ersetzen Sie die Platzhalter-Senderadresse und die Template-IDs durch Ihre eigenen.
5

Test & Create

Testen Sie mit Beispieldaten und klicken Sie auf Erstellen, um das Versenden von E-Mails zu aktivieren.
6

Done!

🎉 Zahlungsevents lösen nun automatisch transaktionale E-Mails über Keplars aus.

Transformationscode-Beispiele

Jeder Handler setzt webhook.url auf den Keplars-Hochprioritäts-Sendepunkt und schreibt webhook.payload in eine Keplars-Anfrage um (der API-Schlüssel wird automatisch als Bearer-Token gesendet). Ersetzen Sie payments@mail.yourdomain.com mit Ihrem verifizierten Absender und your-keplars-*-template-id mit Ihren tatsächlichen Template-IDs.
to muss ein Array sein, selbst für einen einzelnen Empfänger. Wenn Sie template_id verwenden, senden Sie nicht auch subject oder body. Das Template stellt diese bereit.

Zahlungsbestätigungs-E-Mail

payment_succeeded.js
function handler(webhook) {
  if (webhook.eventType !== "payment.succeeded") return webhook;

  const data = webhook.payload.data || {};
  const paymentDate = new Date(webhook.payload.timestamp).toLocaleDateString("en-US", {
    year: "numeric", month: "long", day: "numeric",
  });

  webhook.url = "https://api.keplars.com/api/v1/send-email/high";
  webhook.payload = {
    to: [data.customer?.email],
    from: "payments@mail.yourdomain.com",
    template_id: "your-keplars-payment-success-template-id",
    params: {
      customer_name: data.customer?.name,
      amount: ((data.total_amount || 0) / 100).toFixed(2),
      currency: data.currency || "USD",
      payment_id: data.payment_id,
      payment_method: data.payment_method,
      payment_date: paymentDate,
    },
  };
  return webhook;
}

Benachrichtigung über Zahlungsfehler

payment_failed.js
function handler(webhook) {
  if (webhook.eventType !== "payment.failed") return webhook;

  const data = webhook.payload.data || {};
  const paymentDate = new Date(webhook.payload.timestamp).toLocaleDateString("en-US", {
    year: "numeric", month: "long", day: "numeric",
  });

  webhook.url = "https://api.keplars.com/api/v1/send-email/high";
  webhook.payload = {
    to: [data.customer?.email],
    from: "payments@mail.yourdomain.com",
    template_id: "your-keplars-payment-failed-template-id",
    params: {
      customer_name: data.customer?.name,
      amount: ((data.total_amount || 0) / 100).toFixed(2),
      currency: data.currency || "USD",
      payment_id: data.payment_id,
      error_message: data.error_message || "Your payment could not be processed.",
      payment_date: paymentDate,
    },
  };
  return webhook;
}

Willkommens-E-Mail zum Abonnement

subscription_active.js
function handler(webhook) {
  if (webhook.eventType !== "subscription.active") return webhook;

  const data = webhook.payload.data || {};
  const nextBilling = data.next_billing_date
    ? new Date(data.next_billing_date).toLocaleDateString("en-US", {
        year: "numeric", month: "long", day: "numeric",
      })
    : "";

  webhook.url = "https://api.keplars.com/api/v1/send-email/high";
  webhook.payload = {
    to: [data.customer?.email],
    from: "payments@mail.yourdomain.com",
    template_id: "your-keplars-subscription-active-template-id",
    params: {
      customer_name: data.customer?.name,
      subscription_id: data.subscription_id,
      product_id: data.product_id,
      amount: ((data.recurring_pre_tax_amount || 0) / 100).toFixed(2),
      currency: data.currency || "USD",
      billing_interval: data.payment_frequency_interval || "month",
      next_billing_date: nextBilling,
    },
  };
  return webhook;
}

Kündigungs-E-Mail zum Abonnement

subscription_cancelled.js
function handler(webhook) {
  if (webhook.eventType !== "subscription.cancelled") return webhook;

  const data = webhook.payload.data || {};
  const cancellationDate = new Date(webhook.payload.timestamp).toLocaleDateString("en-US", {
    year: "numeric", month: "long", day: "numeric",
  });

  webhook.url = "https://api.keplars.com/api/v1/send-email/high";
  webhook.payload = {
    to: [data.customer?.email],
    from: "payments@mail.yourdomain.com",
    template_id: "your-keplars-subscription-cancelled-template-id",
    params: {
      customer_name: data.customer?.name,
      subscription_id: data.subscription_id,
      cancellation_date: cancellationDate,
    },
  };
  return webhook;
}

Tipps

  • Verwenden Sie eine verifizierte Senderdomain oder -adresse für bessere Zustellbarkeit.
  • Erstellen Sie ein dediziertes Keplars-Template für jeden Ereignistyp, damit jede E-Mail markenkonform und konsistent bleibt.
  • Personalisieren Sie jede E-Mail, indem Sie Kundendaten wie Name, Betrag und Zahlungs-ID über params übergeben.
  • Testen Sie zuerst im Sandbox-Modus. Sandbox-Sendungen werden im Keplars-Testpostfach erfasst, anstatt zugestellt zu werden.

Fehlerbehebung

  • Überprüfen Sie, ob Ihr API-Schlüssel in Keplars unter Einstellungen → API-Schlüssel korrekt und aktiv ist.
  • Überprüfen Sie, ob Ihre Senderdomain oder -adresse verifiziert ist.
  • Dodo Payments zeigt die rohen Keplars-Fehlerantworten im Webhook-Übertragungsprotokoll an. Überprüfen Sie es auf Details.
  • Der template_id in Ihrem Handler muss mit einem aktiven Template in Ihrem Keplars-Konto übereinstimmen. Überprüfen Sie die ID (und ob sie aktiv ist) im Dashboard.
  • Jeder Handler überprüft webhook.eventType und kehrt frühzeitig zurück, wenn es nicht übereinstimmt. Stellen Sie sicher, dass die richtigen Ereignisse am Dodo Payments-Webhook-Endpunkt abonniert sind.
Zuletzt geändert am 18. Juni 2026