Skip to content

Instantly share code, notes, and snippets.

@StGerman
Created February 1, 2026 20:39
Show Gist options
  • Select an option

  • Save StGerman/11153ee865c95875135b352840bc7737 to your computer and use it in GitHub Desktop.

Select an option

Save StGerman/11153ee865c95875135b352840bc7737 to your computer and use it in GitHub Desktop.
Global B2B Braze Integration Slides
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Global B2B Braze Integration</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.5.0/reset.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.5.0/reveal.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.5.0/theme/black.min.css">
<!-- Theme used for syntax highlighted code -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.5.0/plugin/highlight/monokai.min.css">
<style>
.reveal h1, .reveal h2, .reveal h3 { text-transform: none; }
.reveal table { font-size: 0.6em; }
.reveal ul { font-size: 0.8em; }
.reveal .slide-number { font-size: 24px; }
.status-warning { color: #ffeb3b; }
.status-critical { color: #ff5252; }
.attribution { font-size: 0.4em; color: #888; margin-top: 50px; }
</style>
</head>
<body>
<div class="reveal">
<div class="slides">
<!-- Slide 1: Title -->
<section>
<h2>Global B2B Braze Integration</h2>
<h3>Current State & User Creation</h3>
<p>
<small>Generated by Ferris 🦀 | February 2026</small>
</p>
</section>
<!-- Slide 2: User Creation Rules -->
<section>
<h3>1. User Creation Rules</h3>
<ul style="text-align: left;">
<li><strong>Trigger:</strong> Users are created in Braze <span class="status-critical">ONLY</span> when they receive an invite (email/SMS).</li>
<li><strong>Constraint:</strong> If "Invites by SMS and email" is disabled in BO, the user is <strong>never created</strong> in Braze.</li>
<li><strong>Timing:</strong> Real-time upon invite.</li>
<li><strong>Legacy:</strong> <code>BrazeScheduledWorker</code> (hourly sync) is <span class="status-critical">DISABLED</span>.</li>
<li><strong>Note:</strong> Data Team updates existing users but does not create new ones.</li>
</ul>
</section>
<!-- Slide 3: User Attributes -->
<section>
<h3>2. User-Level Attributes</h3>
<table>
<thead>
<tr>
<th>Attribute</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr><td><code>type</code></td><td>Fixed: "User"</td></tr>
<tr><td><code>user_role</code></td><td>e.g., booker, admin</td></tr>
<tr><td><code>user_status</code></td><td><span class="status-warning">Critical for cleanup</span></td></tr>
<tr><td><code>is_contact_person</code></td><td>Boolean</td></tr>
<tr><td><code>num_asap_rides...</code></td><td>Usage counters</td></tr>
<tr><td><code>language</code> / <code>country</code></td><td>Localization</td></tr>
</tbody>
</table>
</section>
<!-- Slide 4: Company Attributes -->
<section>
<h3>3. Company-Level Attributes</h3>
<table>
<thead>
<tr>
<th>Attribute</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr><td><code>company_id</code></td><td>Unique B2B ID</td></tr>
<tr><td><code>B2B_Company_Level</code></td><td>SMB, Corp, Self</td></tr>
<tr><td><code>B2B_Blocked</code></td><td>Debt, Left, Fraud, Migrated</td></tr>
<tr><td><code>company_allow_marketing</code></td><td><span class="status-warning">Compliance Check</span></td></tr>
<tr><td><code>success_manager_name</code></td><td>Assigned GSM</td></tr>
</tbody>
</table>
</section>
<!-- Slide 5: User Status (The Cleanup Key) -->
<section>
<h3>4. User Status & Cleanup</h3>
<p style="text-align: left;"><strong>Field:</strong> <code>user_status</code></p>
<p style="text-align: left;">⚠️ <strong>Warning:</strong> Explicit definitions for all enum values are missing from current docs.</p>
<ul style="text-align: left;">
<li><strong>Known Value:</strong> <code>active</code> (User valid, can book).</li>
<li><strong>Unknowns:</strong> <code>suspended</code>, <code>deleted</code>, <code>pending</code>?</li>
<li><strong>Action:</strong> We must verify if these states are actively pushed to Braze before the February cleanup.</li>
</ul>
</section>
<!-- Slide 6: Technical & Events -->
<section>
<h3>5. Technical & Events</h3>
<ul style="text-align: left;">
<li><strong>Event Tracking:</strong>
<ul>
<li><code>bi|global_ride_management|order|Created</code></li>
<li><code>bi|global_ride_management|order|Confirmed</code></li>
<li><code>bi|global_ride_management|order|driving</code></li>
<li><code>bi|global_ride_management|order|Completed</code></li>
</ul>
</li>
<li><strong>Responsibility Split:</strong>
<ul>
<li><strong>Creation:</strong> Backend (global-b2b) via Invites.</li>
<li><strong>Updates:</strong> Data Team (DWH).</li>
</ul>
</li>
</ul>
</section>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.5.0/reveal.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.5.0/plugin/notes/notes.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.5.0/plugin/markdown/markdown.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.5.0/plugin/highlight/highlight.min.js"></script>
<script>
// More info about initialization & config:
// - https://revealjs.com/initialization/
// - https://revealjs.com/config/
Reveal.initialize({
hash: true,
controls: true,
progress: true,
center: true,
// Learn about plugins: https://revealjs.com/plugins/
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment