How to keep sensitive fields out of your warehouse

Untick a field under Fields to ingest and Ingest drops it before anything is written: never loaded, never metered. What cannot be left out, and why.

Untick it. Each table of a source lists the fields your own account sends, under Fields to ingest (or Columns to ingest for a database table), and every one starts ticked. A field you untick is dropped by Ingest before anything is written, so its values never reach your destination, a quarantine table, or a curated table built over it, and it does not count toward your usage. Nothing is hidden unless you hide it.

Does Ingest mask personal data on its own?

No. Ingest lands each field as the source sent it, because masking that looks safe often is not: a plain hash of an email address can be reversed by hashing likely addresses, and it is the same in every warehouse, so it would join people across companies. Instead, fields whose names look like personal data are marked in the list, and one link unticks them all. What you leave ticked lands as is, so your warehouse's access controls should cover it.

How do I leave out a nested field or a list?

Untick the parent and everything under it goes. Leaving out home_address removes every home_address__* column; leaving out a list such as dependents removes the table it would have landed in. Names match however the source capitalizes them, so homeAddress and home_address are one field.

For a database source, a column you leave out is left out of the query itself, so its values never leave your database.

What can't be left out?

A field Ingest needs in order to load the table correctly, such as the primary key it merges on, the field it reads to know where it left off, or a field a related table reads its parent's key from. Nor can every column of a database table go at once: untick the table instead. Ingest refuses to save the list and says which field and why, rather than loading the table wrong.

What happens to values already in my warehouse?

Ingest never deletes or rewrites what has already landed because a field was left out. The column stays, and:

  • rows Ingest reads again are written without the value, so a merge table clears it on every record the source still returns;
  • rows it does not read again, rows in an append table, and records deleted at the source keep their values until you remove them;
  • a Full refresh reloads every data table without the field.

The panel says the same where you untick: values already in your destination stay until Ingest reads those rows again.

Who can change it?

Admins and members, the same people who choose a source's tables. The list belongs to the source, so a source two pipelines read leaves out the same fields in both. The panel shows who last changed it, since ticking a field again is the change that lets personal data land.

Sources certified against a real API today: Abilene TX 311, Albany NY 311, Ann Arbor MI 311, Anne Arundel County MD 311, Anthropic Admin API (Claude API), Asana, Auburn WA 311, Aurora IL 311, Austin TX 311, Baltimore MD 311, Baton Rouge LA 311, Beaumont TX 311, Bellevue WA 311, Bellingham WA 311, Berkeley CA 311, Bethlehem PA 311, Bloomington IN 311, Boca Raton FL 311, Boston MA 311, Bridgeport CT 311, Brockton MA 311, Brookline MA 311, Buffalo NY 311, Burlington VT 311, Cambridge MA 311, Cambridge MA Open Data, Charleston County SC 311, Charlotte NC 311, OpenAI (ChatGPT Enterprise), Chula Vista CA 311, Cincinnati OH 311, Chicago IL 311, New York City NY 311, Clayton County GA 311, Cleveland OH 311, Clockify, Cobb County GA 311, Columbus OH 311, Corona CA 311, Azure Cosmos DB, Dallas TX 311, Davenport IA 311, Denver CO 311, Detroit MI 311, Elgin IL 311, Encinitas CA 311, Everett WA 311, Federal Way WA 311, Fort Lauderdale FL 311, Gilbert AZ 311, Google Ad Manager, Google Analytics 4, Google Drive, Google Sheets, Greenwich CT 311, Hartford CT 311, Honolulu HI 311, Houston TX 311, Howard County MD 311, Huntington WV 311, Huntsville AL 311, Indianapolis IN 311, Jersey City NJ 311, Jira, Kansas City MO 311, Kent WA 311, Knox County TN 311, Los Angeles CA 311, Lexington KY 311, Lincoln NE 311, LinkedIn Ads, Livonia MI 311, Louisville KY 311, Lubbock TX 311, Macon-Bibb County GA 311, Manchester NH 311, Maui County HI 311, Medford MA 311, Memphis TN 311, Miami FL 311, Miami-Dade County FL 311, Minneapolis MN 311, Montgomery County MD 311, Multnomah County OR 311, Naperville IL 311, Nashua NH 311, Nashville TN 311, Newark NJ 311, NOAA, New Orleans LA 311, Norfolk VA 311, Oakland CA 311, Omaha NE 311, OpenAI Admin API (API Platform), Open Brewery DB, Paterson NJ 311, Peoria IL 311, Philadelphia PA 311, Pinellas County FL 311, Pittsburgh PA 311, PokéAPI, Portland ME 311, PostgreSQL, PrimeGov public meetings, Prince George's County MD 311, Provo UT 311, Raleigh NC 311, Ramp, Renton WA 311, The Rick and Morty API, Rippling, Sacramento CA 311, Salesforce, San Antonio TX 311, San Francisco CA 311, San Gabriel CA 311, San Jose CA 311, San Mateo County CA 311, San Rafael CA 311, Santa Fe NM 311, Scottsdale AZ 311, Seattle WA 311, Shopify, Somerville MA 311, Springfield MO 311, St. Petersburg FL 311, Tacoma WA 311, Toledo OH 311, Topeka KS 311, Vallejo CA 311, Washington DC 311, Wayne County MI 311, West Des Moines IA 311, Wichita KS 311, Worcester MA 311, Youngstown OH 311.

Where the tables land: Amazon S3, Google Cloud Storage, Azure Blob Storage, Apache Iceberg, Ingest Managed Lakehouse, MotherDuck, Postgres, Amazon Athena, Databricks, Redshift, BigQuery, ClickHouse, ObsessionDB, MySQL / generic SQL, Snowflake.

Start a pipeline