Interaktive E-Mail mit Live-Salesforce-Daten

Salesforce authentifiziert Server-zu-Server-Integrationen mit einem signierten JWT, nicht mit einem Passwort oder einem Refresh-Token, das still und leise abläuft. MailInApps API-Datenquelle spricht diesen Ablauf nativ: Melden Sie sich mit dem Zertifikat und dem privaten Schlüssel einer Connected App an, führen Sie eine SOQL-Abfrage aus, und binden Sie die zurückgegebenen Zeilen direkt an eine KPI-Kennzahlkarte oder einen Diagramm-Block — ein Pipeline-Digest mit echten, aktuellen Zahlen bei jedem Versand, statt einem in eine E-Mail eingefügten Screenshot.

Betreff

Your pipeline this week

Salesforce authentifiziert Server-zu-Server-Integrationen mit einem signierten JWT, nicht mit einem Passwort — und MailInApps API-Datenquelle spricht diesen Ablauf nativ. Einmal verbunden, kann eine KPI-Kennzahlkarte oder ein Diagramm-Block sich direkt an aktuelle Opportunity-, Account- oder Contact-Zeilen binden, ohne ein Refresh-Token, um das man sich kümmern müsste, und ohne CSV, die vor jedem Versand neu exportiert werden muss.

Die meisten „wöchentliche Pipeline"-E-Mails sind ein Screenshot eines Berichts, veraltet in dem Moment, in dem ihn jemand einfügt. Einen Diagramm-Block direkt an eine Salesforce-gestützte Datenquelle zu binden bedeutet, dass die eigene Zahl des Blocks aus einer echten SOQL-Abfrage stammt — und ein wiederkehrender Versand führt diese Abfrage bei jedem Versand frisch erneut aus, sodass der Montags-Digest tatsächlich die Montags-Pipeline widerspiegelt.

Wie die Verbindung funktioniert

MailInApp

Signiert ein JWT mit dem privaten Schlüssel Ihrer Connected App

Salesforce-Token-Endpunkt

Prüft die Signatur, gibt einen Access Token zurück

Salesforce REST API

Führt Ihre SOQL-Abfrage aus, Bearer-Token-authentifiziert

Ihre E-Mail

KPI-Kennzahlkarte & Diagramm-Blöcke live an die Zeilen gebunden

Jeder Schritt geschieht serverseitig bei jedem Versand. Es wird nie ein Passwort gesendet, und es gibt kein Refresh-Token — ein abgelaufener Token wird durch das Signieren einer frischen Assertion ersetzt.

Das ist derselbe JWT-Bearer-Ablauf, den Salesforce für seine eigenen Server-zu-Server-Integrationen dokumentiert, eingebunden in MailInApps bestehende OAuth2-Authentifizierungsmodi für API-Datenquellen, statt einer eigens gebauten, nur für Salesforce gedachten Integration.

Richten Sie eine Connected App einmalig ein

Erstellen Sie in Salesforce Setup eine Connected App, aktivieren Sie die OAuth-Einstellungen, und laden Sie unter Use digital signatures ein selbstsigniertes Zertifikat hoch — das Zertifikat geht an Salesforce, der dazu passende RSA-Private-Key geht an MailInApp. Setzen Sie Permitted Users auf Admin approved users are pre-authorized, was den Austausch nicht-interaktiv macht: Es gibt keinen Zustimmungsbildschirm, durch den sich ein Skript klicken müsste. Notieren Sie sich den Consumer Key der Connected App und die My Domain-URL Ihrer Organisation — beide fließen in die Verbindung in MailInApp ein.

Richten Sie sie auf eine SOQL-Abfrage

Der Endpoint der Datenquelle ist eine REST-Abfrage-URL, und der Abfragestring bestimmt genau die Daten, die Sie zurückbekommen:

SELECT Name, Amount, StageName, CloseDate FROM Opportunity WHERE IsClosed = false

Setzen Sie Data path auf records — Salesforce verpackt seine Abfrageergebnisse in einem records-Array. Beziehungsfelder wie Owner.Email kommen verschachtelt zurück und werden von MailInApps Zeilen-Parser verworfen, halten Sie die Abfrage also flach; wählen Sie stattdessen OwnerId, falls Sie später eine Owner-Kennung zum Filtern oder Zusammenführen brauchen.

Binden Sie Blöcke direkt daran, nicht Merge-Tags

Fügen Sie die Verbindung über das Datenpanel des Studios mit einer Collection-Rolle zu einem Projekt hinzu — dieselbe Verknüpfung, die ein Repeat-Block nutzt. Von dort aus können KPI-Kennzahlkarte-, Balken-, Linien- und Kreisdiagramm-Blöcke sich in ihrem eigenen Inspektor direkt daran binden:

  • Eine KPI-Kennzahlkarte, eingestellt auf Amount mit einem Sum-Aggregat, wird zu einer live „gesamte offene Pipeline"-Zahl.
  • Ein Balkendiagramm, gruppiert nach StageName, mit Amount als Serie (wieder ein Sum-Aggregat), wird zu einer Pipeline-Aufschlüsselung nach Stufe.

Keiner der beiden Blöcke braucht einen einzigen von Hand getippten Merge-Tag — die Verknüpfung erledigt die Arbeit, und beide bleiben korrekt, während Deals die Stufe wechseln oder abgeschlossen werden.

Versenden Sie es nach einem Zeitplan

Ein wöchentlicher wiederkehrender Versand führt die SOQL-Abfrage jedes Mal erneut aus und rendert beide Blöcke bei jedem Auslösen gegen Salesforces aktuelle Zeilen neu — dieselbe Digest-Struktur, jeden Montag frische Zahlen, ohne dass jemand sie von Hand neu baut. Ein Schaltfläche-Block, der auf die Salesforce-URL jeder Opportunity zeigt, gibt jedem, der den Digest liest, einen Ein-Klick-Weg, um den Datensatz hinter einer Zahl zu öffnen, die seine Aufmerksamkeit weckt.

Erste Schritte

Erstellen Sie eine Salesforce Connected App mit einem Zertifikat für den JWT-Bearer-Ablauf, verbinden Sie sie im Data-Sources-Tab von MailInApp mit Ihrem Consumer Key, dem Benutzernamen des Integrationsbenutzers und dem privaten Schlüssel, richten Sie den Endpoint auf eine SOQL-Abfrage mit records als Data path, und binden Sie dann eine KPI-Kennzahlkarte und ein Balkendiagramm über das Datenpanel des Studios daran. Die vollständige Feld-für-Feld-Einrichtung finden Sie in der Salesforce-Integrationsanleitung.

Ein typischer Ablauf zum Erstellen und Versenden

  1. 1

    Erstellen Sie eine Salesforce Connected App für den Server-zu-Server-Zugriff

    Aktivieren Sie die OAuth-Einstellungen, laden Sie ein selbstsigniertes digitales Zertifikat hoch, schalten Sie den JWT Bearer Flow ein, und setzen Sie Permitted Users auf „Admin approved users are pre-authorized“, damit kein Mensch durch einen Zustimmungsbildschirm klicken muss.

  2. 2

    Verbinden Sie Salesforce als API-Datenquelle

    Wählen Sie OAuth2 JWT Bearer im Data-Sources-Tab von MailInApp, und fügen Sie dann die Token-URL, den Consumer Key der Connected App als Issuer, den Benutzernamen des Integrationsbenutzers als Subject, den Login-Host als Audience sowie den passenden privaten Schlüssel ein.

  3. 3

    Richten Sie den Endpunkt auf eine SOQL-Abfrage

    Der Endpoint ist die REST-Abfrage-URL Ihrer Organisation und der Data path ist „records“ — eine Abfrage wie SELECT Name, Amount, StageName, CloseDate FROM Opportunity WHERE IsClosed = false liefert bei jedem Abruf aktuelle Pipeline-Zeilen.

  4. 4

    Binden Sie KPI- und Diagramm-Blöcke direkt daran

    Fügen Sie über das Datenpanel des Studios eine Collection-Rollen-Verknüpfung zur Quelle hinzu, und binden Sie dann das Value-Feld einer KPI-Kennzahlkarte (Sum von Amount) sowie das Group by eines Balkendiagramms (StageName) daran — keine Merge-Tags von Hand zu tippen.

  5. 5

    Versenden Sie es nach einem wiederkehrenden Zeitplan

    Ein wöchentlicher wiederkehrender Versand führt die Abfrage jedes Mal erneut aus und rendert beide Blöcke gegen Salesforces aktuelle Zeilen neu, sodass der Montags-Digest stets die Montags-Pipeline widerspiegelt.

Häufig gestellte Fragen

Muss der Access Token jemals von Hand erneuert werden?

Nein — MailInApp signiert automatisch eine neue JWT-Assertion und tauscht sie gegen einen neuen Access Token, sobald der zwischengespeicherte kurz vor dem Ablauf steht, und erneut, falls ein Aufruf jemals mit „unauthorized“ zurückkommt. In diesem Ablauf gibt es kein Refresh-Token, um das man sich kümmern müsste; ein abgelaufener Token wird einfach durch das Prägen eines neuen ersetzt.

Erreicht mein Salesforce-Passwort jemals MailInApp?

Nein — der JWT-Bearer-Ablauf authentifiziert mit einer signierten Assertion, die gegen ein Zertifikat geprüft wird, nie mit einem Benutzername-/Passwort-Austausch. Das einzige Geheimnis, das MailInApp speichert, ist die private-Schlüssel-Hälfte dieses Zertifikatspaars, nach dem Speichern in jeder Antwort maskiert.

Kann jeder Vertriebsmitarbeiter nur seine eigenen Opportunities sehen?

Nur, wenn die SOQL-Abfrage ein flaches Feld zum Filtern zurückgibt — ein Beziehungsfeld wie Owner.Email kommt als verschachteltes Objekt zurück und wird verworfen, da MailInApps Zeilen-Parser verschachtelte Werte nicht abflacht. Wählen Sie stattdessen eine flache Kennung wie OwnerId, und filtern Sie einen gebundenen Diagramm-Block gegen ein passendes Feld auf der eigenen Kontaktzeile Ihrer Zielgruppe (der Bind-to-data-Filter eines Diagramms kann sich auf Empfänger-Merge-Tags beziehen), um dieselbe gemeinsame Abfrage pro Empfänger aufzuteilen.

Welche Salesforce-Edition brauche ich?

Jede Edition mit aktiviertem REST-API-Zugriff — Enterprise, Unlimited, Performance und Developer Edition enthalten ihn bereits; Professional und Essentials benötigen das API-Add-on. Das eigene Profil des Integrationsbenutzers muss zudem API Enabled aktiviert haben.

Funktioniert das auch gegen eine Sandbox statt Production?

Ja — verwenden Sie https://test.salesforce.com sowohl als Host der Token-URL als auch als Audience-Wert, und richten Sie den Endpoint auf die eigene My-Domain-URL der Sandbox statt der von Production.

Bauen Sie das im Studio

Starten Sie mit dem kostenlosen Tarif — jeder interaktive Block und die vollständige Fallback-Engine sind in jedem Tarif enthalten.