Skip to main content
Puneet Gupta
Founder, Supaflow
View all authors

Salesforce Google Sheets Integration: Two-Way Sync

· 19 min read
Puneet Gupta
Founder, Supaflow

A Salesforce Google Sheets integration can send CRM data to a spreadsheet for reporting and return reviewed changes to Salesforce. The safest design does not let both systems overwrite the same fields whenever they want. It keeps a stable Salesforce ID on every row, limits which fields Sheets can change, and orders the two sync directions so an outbound refresh cannot erase an unprocessed edit.

This guide compares the main connector, automation, and API approaches. It then shows how to build a scheduled two-way Salesforce and Google Sheets workflow with Supaflow using separate outbound and writeback pipelines.

AWS Cost and Usage Report to Snowflake for Margin Analysis

· 22 min read
Puneet Gupta
Founder, Supaflow

Moving the AWS Cost and Usage Report to Snowflake answers a question that Cost Explorer cannot answer alone: does the revenue from each customer justify the cloud cost required to serve them?

The practical architecture is straightforward. Export AWS Cost and Usage Report 2.0 (CUR 2.0) to Amazon S3 as Parquet, load the files into Snowflake, sync revenue data from Stripe, and add customer and segment context from Salesforce. A shared customer identity model then turns three disconnected systems into customer-level cost, revenue, and margin analysis.

AWS Data Exports -> S3 Parquet ---\
\
Stripe ------------------------------> Supaflow -> Snowflake -> dbt -> Margin dashboard
/
Salesforce ------------------------/

This guide explains the pipeline, the allocation decisions that matter, and the Snowflake model needed to calculate gross margin without hiding shared or unattributed costs.

In other words, moving AWS billing data to Snowflake is the data-engineering foundation for cloud unit economics and customer profitability analysis.

How Much Does a Data Pipeline Cost? 6 Models Compared

· 14 min read
Puneet Gupta
Founder, Supaflow

How much does a data pipeline cost?

The honest answer is not a universal monthly range. It depends on what the vendor meters. The same pipeline can look inexpensive under one pricing model and become the largest line item in your data stack under another.

A tool may charge for distinct rows that changed, every event loaded, gigabytes moved, reserved capacity, or the compute time required to finish the work. Before comparing prices, you have to translate each quote into the same workload.

Here is one real example. A Supaflow workspace moved 26.3 million rows across 453 jobs using 26.98 credits. At the current Professional list price of $3 per credit, that was $80.95. Fivetran's 2026 Pricing Estimator returned $1,908.86 per month when we entered the same row count as Monthly Active Rows (MAR).

The usage screen rounds the credit total and cost independently. It displays 26.98 credits to two decimal places, while the $80.95 estimate is calculated from the underlying unrounded daily credit values. Multiplying only the displayed credit total would produce $80.94 because that calculation starts from an already rounded number.

That does not mean every 26-million-row pipeline will have the same result. It shows why the billing unit matters more than the headline price.

Oracle OTM Analytics: 12 KPIs and the Data Behind Them

· 13 min read
Puneet Gupta
Founder, Supaflow

Oracle OTM analytics should answer four questions quickly: What are we spending? Are shipments on time? Are we using capacity well? Where is performance getting worse?

The difficult part is rarely drawing the dashboard. It is agreeing on the calculation behind each number and mapping that definition to the right Oracle Transportation Management data.

This guide defines 12 practical OTM KPIs, the formulas behind them, and the shipment, cost, stop, and location data needed to calculate them in a warehouse or BI tool. To move that source data into your analytics platform, start with the Supaflow Oracle Transportation Management connector.

How to Export Salesforce Marketing Cloud Data to Snowflake

· 14 min read
Puneet Gupta
Founder, Supaflow

Salesforce Marketing Cloud Engagement stores useful analytics data across Data Extensions, subscribers, sends, journeys, and system Data Views such as _Sent, _Open, and _Click. Moving that data into Snowflake gives marketing, revenue, and data teams one place to analyze engagement alongside CRM, product, and transaction data.

The timing matters. Salesforce keeps only the most recent 180 days in Automation Studio Data Views. If you need a durable history, start exporting before older engagement records age out.

This guide shows how to export Salesforce Marketing Cloud data with Supaflow's SFMC-to-Snowflake connector, including the Installed Package permissions, the connector settings visible in the app, the objects to select, and the checks to run after the first load.

SQL Server to Redshift Migration: Setup, Test, Cut Over

· 15 min read
Puneet Gupta
Founder, Supaflow

Migrating SQL Server to Amazon Redshift is not a backup-and-restore job. SQL Server is an operational database; Redshift is an analytical warehouse. The safest approach is to move table data continuously, validate it while SQL Server stays live, and switch downstream analytics only after the Redshift copy passes your checks.

This guide shows how to build that migration with Supaflow's SQL Server connector and Amazon Redshift connector. You will configure Redshift as the destination, connect SQL Server as the source, run an initial load, test ongoing changes, and use a controlled cutover checklist instead of betting everything on one migration window.

Multi-Tenant Isolation with Clerk + Supabase RLS

· 16 min read
Puneet Gupta
Founder, Supaflow

To implement secure multi-tenant isolation with Clerk and Supabase RLS, pass the native Clerk session token to Supabase, derive the active organization from verified JWT claims in Postgres, and let RLS—not the browser—enforce the tenant boundary. This pattern does not use a Clerk JWT template, a shared Supabase JWT secret, or auth.uid().

A user can sign in successfully and still see or change another tenant's data. Authentication proves who the user is; it does not tell Postgres which organization rows that user may access.

The risky shortcut is to trust an organization ID sent by the browser. A caller can change that value. Another common mistake is to use auth.uid(), which represents a Supabase Auth user UUID rather than Clerk's string user ID. Membership lookups inside RLS policies can also become recursive and slow.

This tutorial shows how to make the verified Clerk session token the root of the authorization decision:

  • Clerk authenticates the user and supplies the active organization context.
  • Supabase verifies the Clerk token and makes its claims available to Postgres.
  • Postgres derives the user and tenant from those claims.
  • Row-Level Security applies indexed, non-recursive policies to every query.

By the end, you will have a reusable schema, JWT helper functions, a controlled tenant-bootstrap function, explicit read/write policies, and tests for personal accounts, organizations, role boundaries, and cross-tenant attacks.

The complete runnable implementation is in the supaflow-labs/clerk-supabase-demo repository. The snippets below are intentionally small enough to study; use the repository migration and tests when building the complete example.

Google Drive & Google Sheets to Snowflake: ETL Tools

· 14 min read
Puneet Gupta
Founder, Supaflow

Moving Google Drive files into Snowflake can mean several different things: loading a folder of recurring CSV exports, syncing every worksheet in a set of Google Sheets, replacing one named range, or running a one-time import. Those workloads should not share one blanket recommendation.

This guide compares Supaflow, Fivetran, Hevo, Airbyte, manual Snowflake loads, and a custom Google API pipeline. It then walks through a Supaflow setup using CSV files; the same pipeline workflow applies to TSV, Excel (.xlsx), and native Google Sheets sources.

How to Connect a Local SQL Server with ngrok or bore

· 9 min read
Puneet Gupta
Founder, Supaflow

You want to try Supaflow against a SQL Server that runs on your own machine -- a developer install on your laptop or a server on your office network. There is no public IP, no port forwarding, and no VPN between that database and the cloud. A Supaflow-hosted Agent needs to reach the database over the network, so localhost in the datasource form will not work for this test.

A TCP tunnel is the fastest way to prove connectivity during a proof of concept (POC). This guide shows two temporary options: ngrok, the popular managed tunneling service, and bore, a minimal open-source alternative that needs no account. Both give you a public host and port that forward straight to your local SQL Server, and both plug into the Supaflow datasource form the same way.

For production pipelines, deploy a self-hosted Docker Agent on a stable host inside the same private network as SQL Server. The agent connects to SQL Server over the local network and polls Supaflow over outbound HTTPS, so the database port stays private. This removes the tunnel relay and changing public endpoint from the data path and gives long-running pipelines a predictable network path.

How to Replicate MySQL Data to Snowflake

· 10 min read
Puneet Gupta
Founder, Supaflow

Need MySQL data in Snowflake for analytics, reporting, or a migration? Supaflow handles the initial load and keeps new and updated rows in sync without a custom export job. This guide walks through the setup, the first sync, and the checks that confirm your Snowflake tables match the source.

Before you start, decide how each table records changes and how you want to handle deleted rows. Supaflow uses a date, datetime, or timestamp column to find inserts and updates. It does not read the MySQL binary log, so hard deletes require a separate approach.

For the shorter product and capability overview, see the MySQL to Snowflake connector page.