Salesforce
MailInApp hat keine Salesforce-App zum Installieren — Sie brauchen auch keine. Salesforces eigene REST API antwortet mit reinem JSON über HTTPS, und MailInApps API-Datenquelle mit OAuth2-JWT-Bearer-Authentifizierung ist darauf ausgelegt, direkt mit Salesforces Server-zu-Server-Anmeldeablauf zu sprechen: kein interaktiver Zustimmungsbildschirm, kein Refresh-Token, um das man sich kümmern müsste, und Ihr Salesforce-Passwort berührt MailInApp nie.
Diese Anleitung richtet eine reine Lesezugriffsverbindung ein — sie zieht Opportunity-, Account- oder Contact-Zeilen in Merge-Tags, Repeat-Blöcke und live gebundene Diagramm-Blöcke. Sie schreibt nicht zurück nach Salesforce.
Wie die Verbindung funktioniert
- MailInApp signiert eine kurzlebige JWT-Assertion mit dem privaten Schlüssel Ihrer Salesforce Connected App.
- Es sendet diese Assertion per POST an Salesforces Token-Endpunkt, der die Signatur gegen das von Ihnen hochgeladene Zertifikat prüft und einen Access Token zurückgibt — es wird nie ein Benutzername oder Passwort gesendet.
- MailInApp speichert den Access Token zwischen und ruft die Salesforce REST API (eine SOQL-Abfrage) damit als
Bearer-Token auf, wobei er automatisch erneuert wird, bevor der Token abläuft oder falls ein Aufruf jemals mit „unauthorized" zurückkommt.
Jeder Schritt passiert serverseitig, bei jedem Abruf — es gibt nichts, was Sie einmal eingerichtet noch am Leben halten oder von Hand erneut autorisieren müssten.
Die Salesforce-Seite einrichten
- Gehen Sie in Salesforce Setup zu App Manager → New Connected App (oder New Connected App (Lightning)).
- Füllen Sie die grundlegenden Name-/E-Mail-Felder aus und aktivieren Sie dann Enable OAuth Settings.
- Laden Sie unter Use digital signatures ein Zertifikat hoch. Falls Sie noch keines haben, erzeugen Sie ein selbstsigniertes Zertifikat und den dazu passenden RSA-Private-Key — das Zertifikat geht an Salesforce, der private Schlüssel geht an MailInApp. Verwahren Sie den privaten Schlüssel sicher; Sie fügen ihn einmal in MailInApp ein, danach wird er maskiert.
- Fügen Sie den OAuth-Berechtigungsbereich hinzu, den Ihre Integration braucht —
api(Manage user data via APIs) reicht zum Lesen von Datensätzen. - Speichern Sie, und bearbeiten Sie dann die Richtlinien der Connected App: Stellen Sie Permitted Users auf Admin approved users are pre-authorized. Das ist es, was den Ablauf nicht-interaktiv macht — ohne das erwartet Salesforce, dass ein Mensch durch einen Zustimmungsbildschirm klickt, was ein Server-zu-Server-JWT-Austausch nicht kann.
- Weisen Sie den Integrationsbenutzer (einen echten Salesforce-Benutzer mit aktiviertem API-Zugriff in seinem Profil, oder einen eigenen, nur für die Integration angelegten Benutzer) der Connected App über ein Permission Set zu.
- Merken Sie sich den Consumer Key der Connected App — das ist der
issuer, den MailInApp benötigt — sowie die My Domain-URL Ihrer Organisation (Setup → My Domain), z. B.https://yourorg.my.salesforce.com.
In MailInApp verbinden
Legen Sie unter Data Sources → + API connection Folgendes fest:
- Endpoint — die REST-Abfrage-URL Ihrer Organisation, z. B.
https://yourorg.my.salesforce.com/services/data/v61.0/query?q=SELECT+Name,Amount,StageName,CloseDate+FROM+Opportunity+WHERE+IsClosed+=+false(eine URL-codierte SOQL-Abfrage — siehe Abfragen mit SOQL weiter unten). - Data path —
records. Salesforces Abfrageantwort verpackt die eigentlichen Zeilen in einemrecords-Array neben den FelderntotalSize/done. - Authentication — OAuth2 JWT Bearer:
- Token URL —
https://login.salesforce.com/services/oauth2/tokenfür Production- und Developer-Edition-Organisationen,https://test.salesforce.com/services/oauth2/tokenfür eine Sandbox. - Issuer — der Consumer Key der Connected App.
- Subject — der Salesforce-Benutzername des Integrationsbenutzers (die Identität, die das JWT bestätigt).
- Audience — derselbe Host wie die Token-URL:
https://login.salesforce.com(oderhttps://test.salesforce.comfür eine Sandbox). - Private key — der RSA-Private-Key, der zu dem in die Connected App hochgeladenen Zertifikat passt.
- Token URL —
Klicken Sie auf Test these settings, um die Verbindung vor dem Speichern zu bestätigen — dabei wird ein echter Token geprägt und die ersten paar Zeilen als Vorschau angezeigt. Nach dem Speichern können Sie jederzeit Test saved connection nutzen, um sie erneut zu prüfen, ohne den privaten Schlüssel erneut einfügen zu müssen.
Abfragen mit SOQL
Der Abfragestring des Endpunkts ist die Daten, die Sie zurückbekommen — es gibt keine separate Oberfläche zum Auswählen von Feldern, gestalten Sie die SOQL-Abfrage also so, dass sie genau die Spalten liefert, die Ihre E-Mail braucht:
SELECT Name, Amount, StageName, CloseDate FROM Opportunity WHERE IsClosed = false
Ein paar Dinge, die es über die Form der zurückkommenden Daten zu wissen lohnt:
- Nur flache Felder. Ein Beziehungsfeld wie
Owner.EmailoderAccount.Namekommt als verschachteltes JSON-Objekt zurück ({"Owner": {"Email": "..."}}), und MailInApps Zeilen-Parser verwirft verschachtelte Werte, statt zu raten, wie sie abzuflachen sind. Falls Sie eine Owner- oder Account-Kennung als nutzbaren Merge-Tag brauchen, wählen Sie stattdessen ein flaches Feld — zum BeispielOwnerId— statt eines gepunkteten Beziehungspfads. - Bis zu 1.000 Zeilen pro Abruf. Reichlich für eine Digest- oder Dashboard-E-Mail; schränken Sie mit
WHERE/ORDER BY/LIMITin der Abfrage selbst weiter ein, falls Sie nur einen bestimmten Ausschnitt möchten. - Bei jedem Rendern frisch abgerufen. Ein wiederkehrender Versand führt die Abfrage bei jedem Versand erneut aus und rendert gebundene Blöcke mit Salesforces aktuellen Zeilen neu — es gibt keine Zwischenspeicherung über den OAuth-Token selbst hinaus.
Die Daten nutzen
Fügen Sie sie, einmal verbunden, über das Datenpanel des Studios mit einem Alias (z. B. pipeline) und einer Rolle zu einem Projekt hinzu:
- Merge fields lösen
{{pipeline.field}}aus der ersten zurückgegebenen Zeile auf — nützlich für eine einzelne Kennzahl in der Überschrift. - Repeat rows speisen einen Repeat-Block — eine Zeile pro Opportunity, gerendert als Liste oder Tabelle.
- Collection-Verknüpfungen sind das, an das KPI-Scorecard-, Balken-, Linien- und Kreisdiagramm-Blöcke sich direkt binden — ein KPI-Scorecard mit dem Value-Feld
Amountund einem Sum-Aggregat liefert Ihnen eine live „Gesamte offene Pipeline"-Zahl ganz ohne Merge-Tag-Verdrahtung, und ein nachStageNamegruppiertes Balkendiagramm macht aus derselben Abfrage eine Pipeline-Aufschlüsselung nach Stufe.
Ein vollständig durchgearbeitetes Beispiel — ein wöchentlicher Pipeline-Digest, komplett aus dieser Verbindung aufgebaut — finden Sie unter Interaktive E-Mail mit Live-Salesforce-Daten.