Skip to main content

Snowflake Integration

Connect Toolio to Snowflake — via shared credentials or Secure Data Sharing — to import your data and export plan values.

Toolio integrates with Snowflake in two ways. The original approach is to share warehouse credentials so Toolio can connect and import your data. The newer approach uses Snowflake Secure Data Sharing, which grants live, read-only access between accounts with no files to copy or move — and supports both importing your data into Toolio and exporting your plan values back into Snowflake.

Where it's available, we recommend Secure Data Sharing. It's the more secure option because no login credentials are ever exchanged, access is read-only and scoped to only the tables you share, and you can revoke it instantly.

Use Cases

  • Secure Data Sharing (recommended) — Choose this when you want to avoid sharing a service login, expose only a curated read-only slice of data, keep access instantly revocable, or bring Toolio plan values back into Snowflake for reporting and analytics.

  • Sharing Credentials — The original method, still supported for imports. Choose this when Secure Data Sharing isn't available for your setup (for example, your account is in a different region or cloud than Toolio's) or you prefer to provision a dedicated Snowflake user.

Why Secure Data Sharing Is More Secure

  • No standing credentials. No Snowflake username or password is transmitted, stored, or needs rotating — so there's nothing to leak.

  • No login into your account. Toolio reads the data you share; it never signs in to your Snowflake instance.

  • Least privilege. You grant read-only access to only the specific toolio_* tables or secure views, rather than a role that could be over-scoped.

  • Instantly revocable and auditable. Drop the grant and access ends immediately, with no orphaned credentials left behind.

Preparing Your Source Tables

Both import methods read the same tables, so set these up first. (This section applies to imports only — exports use Toolio's own schema.)

Table Naming Conventions

Set up a table or secure view for each Toolio core model. Use the required names below:

Data Model

Table Name

Product

toolio_products

Inventory

toolio_inventory

Sale

toolio_sales

Purchase Order

toolio_purchase_orders

Receipt

toolio_receipts

Required Table Schema

Each column on your table corresponds to an attribute on Toolio's data models, and column names should match the attribute slugs. Please see the core model documentation for the column types to use.

Pagination & UpdatedAt Field

If possible, add an updatedAt field to each table you create. This helps Toolio keep track of the last value synced from your data warehouse so it pulls only new and changed rows. To learn more, see how Toolio handles pagination.

Sharing Credentials (Direct Connection)

With this method, Toolio connects directly to your Snowflake account using a dedicated user and role that you provision. It is used for importing your source data into Toolio.

Share the following information with your Toolio Customer Success Manager to give access to your data warehouse:

.snowflakecomputing.com

user=

db=

schema=

warehouse=

role=

Please follow the steps in Sharing Integration Credentials to send these details securely. Grant read-only access — Toolio never needs to write to your source data.

Secure Data Sharing

In Snowflake, a provider account grants a consumer account live, read-only access to data — through a direct share or a private listing. The consumer mounts it as a read-only database in their own account. No storage is duplicated, and each account is billed only for the compute it uses. Secure Data Sharing supports both directions with Toolio.

Direct sharing requires both accounts to be in the same Snowflake region and cloud provider. If yours differs, let your Customer Success Manager know — cross-region sharing is possible but requires database replication first.

Importing Data with Secure Data Sharing

For imports, your account is the provider and Toolio is the consumer. Once your toolio_* tables are in place (see Preparing Your Source Tables above), you share them with Toolio through a private listing and give Toolio the listing's global name.

  1. Create a private listing for the data you want Toolio to read. You can do this in Snowsight under Data Products > Provider Studio, or with SQL. Include the toolio_* tables Toolio needs — you can share every table, or add only specific tables if you'd prefer to limit what's exposed.

  2. Add Toolio's account as a target. Request Toolio's Snowflake account identifier from your Customer Success Manager, then add it as a target. Run the command exactly as shown — it must stay multi-line, with the line breaks and indentation preserved:

ALTER LISTING <listing_name> ADD TARGETS $$
targets:
  accounts: ["<toolio_account>"]
$$;
  1. Get the listing's global name. Run the command below and copy the global_name value (for example, GZ1MWZ2OYN3):

DESC LISTING <listing_name>;
  1. Connect it in Toolio. Create the Snowflake import integration in Toolio and paste the global_name into the listing field. Toolio then reads your shared tables directly from the listing — no credentials are exchanged.

Exporting Plan Values with Secure Data Sharing

For exports, Toolio is the provider and your account is the consumer. You set this up yourself from the Integrations page — Toolio provisions a shared database and a private listing automatically, and you accept the listing on your side. Toolio still generates the underlying CSV exports as well, so file-based access remains available.

  1. Create the integration. From the Integrations page in Toolio, create a new Snowflake exporter integration and enter your Snowflake account ID — the same identifier you've already shared with Toolio (it looks similar to Toolio's own account ID). On save, Toolio creates a new database in its Snowflake account and a private listing targeted at your account.

[Screenshot: the Snowflake integration setup dialog with the account ID field]

  1. Find the listing ID (optional). Reopen the integration to edit it — the listing ID is shown in the edit dialog. You can pass it to your team to help them locate the listing, but it isn't required: the private listing is already visible to your Snowflake account without it.

[Screenshot: the integration edit dialog highlighting the Listing ID]

  1. Accept the listing in Snowflake. In your account, go to Data Products > Private Sharing in Snowsight, find the Toolio listing, click Get, and create a database from it for your team to query.

[Screenshot: accepting the private listing in Snowsight]

  1. Run exports and wait for refresh. Run your Toolio exports as usual. Exported data does not appear instantly — Snowflake completes a data replication/refresh after each export, and the data appears in the relevant tables once it finishes. To track progress, use Snowflake's AVAILABLE_LISTING_REFRESH_HISTORY table function.

The exported tables contain plan data at the lowest level of granularity — the Cartesian combination of every scenario, time period, and planning attribute, with the full set of Toolio metrics for each combination. This matches the file-based export schema, so you can review a sample layout in Automated Plan Exports.

Each export is a full replace: every run rebuilds the destination table from scratch with that run's complete data set, so the table always reflects the most recent export only. Exports are not incremental — data is never appended or merged across runs. Because the table is recreated on each run, avoid building persistent objects directly on top of it; create your own view or downstream table if you need a stable structure to query.

FAQs

Which method should I use?

Either works for imports. Choose Sharing Credentials if you're comfortable provisioning a dedicated Snowflake user for Toolio; choose Secure Data Sharing if you'd rather avoid a service login and expose only specific read-only tables. Exporting plan values back into Snowflake is available through Secure Data Sharing.

Why don't I see my exported data right after running an export?

Snowflake needs to complete a data replication/refresh after each export before the new data is queryable. Once it finishes, the data appears in the relevant tables. Monitor progress with the AVAILABLE_LISTING_REFRESH_HISTORY function.

Do I need the listing ID to access exported data?

No. The private listing is visible to your Snowflake account without it. The listing ID is shown in the integration edit dialog only as a convenience for locating the listing.

Does each export add to the table or replace it?

Each export fully replaces the table. Every run rebuilds the destination table from scratch with that run's complete data set — exports are full snapshots, never incremental, so nothing is appended or merged across runs. If you need a stable structure to query, build your own view or downstream table on top of the exported one.

Does Secure Data Sharing use my Snowflake credits?

Providing a share costs nothing on its own. Compute is billed to whichever account runs a query — so Toolio's reads of your import share are billed to Toolio, and your queries against the Toolio export listing are billed to your account.

Related Articles

Did this answer your question?