This integration is powered by Singer's recharge tap and certified by Stitch. Check out and contribute to the repo on GitHub.
For support, contact Stitch support.
Recharge integration summary
Stitch’s Recharge integration replicates data using the Recharge Payments API. To access the Recharge API documentation, you will need your API key. Refer to the Schema section for a list of objects available for replication.
Recharge feature snapshot
A high-level look at Stitch's Recharge (v1) integration, including release status, useful links, and the features supported in Stitch.
STITCH | |||
Release status |
Deprecated on August 30, 2022 |
Supported by | |
Stitch plan |
Standard |
API availability |
Not available |
Singer GitHub repository | |||
REPLICATION SETTINGS | |||
Anchor Scheduling |
Supported |
Advanced Scheduling |
Supported |
Table-level reset |
Unsupported |
Configurable Replication Methods |
Unsupported |
DATA SELECTION | |||
Table selection |
Supported |
Column selection |
Supported |
Select all |
Supported |
||
TRANSPARENCY | |||
Extraction Logs |
Supported |
Loading Reports |
Supported |
Connecting Recharge
Recharge setup requirements
To set up Recharge in Stitch, you need:
-
A Shopify Account. You need this to access your Recharge information.
Step 1: Obtain your Recharge access token
- Log into your Shopify account, select Apps, and then click on your Recharge application.
- In the application, click the EXPLORE Recharge located near the top right corner of the page.
- Click on the Integrations tab, and then click API tokens….
- Click on Create an API token.
- On the Create an API token page:
- In the Details section, enter a Nickname and Contact email into their respective fields.
- In the Permission section, select the
Read Access
scope for each permission.
- Click Save to create the Access Token.
Step 2: Add Recharge as a Stitch data source
- Sign into your Stitch account.
-
On the Stitch Dashboard page, click the Add Integration button.
-
Click the Recharge icon.
-
Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.
For example, the name “Stitch Recharge” would create a schema called
stitch_recharge
in the destination. Note: Schema names cannot be changed after you save the integration. - In the Access Token field, enter the access token you obtained in the previous step.
Step 3: Define the historical replication start date
The Sync Historical Data setting defines the starting date for your Recharge integration. This means that data equal to or newer than this date will be replicated to your data warehouse.
Change this setting if you want to replicate data beyond Recharge’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.
Step 4: Create a replication schedule
In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.
Recharge integrations support the following replication scheduling methods:
-
Advanced Scheduling using Cron (Advanced or Premium plans only)
To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.
Step 5: Set objects to replicate
The last step is to select the tables and columns you want to replicate. Learn about the available tables for this integration.
Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.
For Recharge integrations, you can select:
-
Individual tables and columns
-
All tables and columns
Click the tabs to view instructions for each selection method.
- In the integration’s Tables to Replicate tab, locate a table you want to replicate.
-
To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.
-
To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.
- Repeat this process for all the tables and columns you want to replicate.
- When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
- Click into the integration from the Stitch Dashboard page.
-
Click the Tables to Replicate tab.
- In the list of tables, click the box next to the Table Names column.
-
In the menu that displays, click Track all Tables and Fields:
- Click the Finalize Your Selections button at the bottom of the page to save your data selections.
Initial and historical replication jobs
After you finish setting up Recharge, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.
For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.
Initial replication jobs with Anchor Scheduling
If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the Anchor Scheduling documentation for more information.
Free historical data loads
The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.
Recharge table reference
Schemas and versioning
Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.
The schema and info displayed below is for version 1 of this integration.
Table and column names in your destination
Depending on your destination, table and column names may not appear as they are outlined below.
For example: Object names are lowercased in Redshift (CusTomERs
> customers
), while case is maintained in PostgreSQL destinations (CusTomERs
> CusTomERs
). Refer to the Loading Guide for your destination for more info.
addresses
The addresses
table contains info about the addresses (shipping locations) a customer has. A subscription is tied to a given address, but a customer can have multiple addresses.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join addresses with | on |
---|---|
charges |
addresses.id = charges.address_id addresses.customer_id = charges.customer_id |
onetimes |
addresses.id = onetimes.address_id addresses.customer_id = onetimes.customer_id |
orders |
addresses.id = orders.address_id addresses.customer_id = orders.customer_id |
subscriptions |
addresses.id = subscriptions.address_id addresses.customer_id = subscriptions.customer_id |
customers |
addresses.customer_id = customers.id |
discounts |
addresses.discount_id = discounts.id |
address1 STRING |
|||
address2 STRING |
|||
cart_attributes
ARRAY
|
|||
cart_note STRING |
|||
city STRING |
|||
company STRING |
|||
country STRING |
|||
created_at DATE-TIME |
|||
customer_id INTEGER |
|||
discount_id INTEGER |
|||
first_name STRING |
|||
id INTEGER |
|||
last_name STRING |
|||
note_attributes
ARRAY
|
|||
original_shipping_lines
ARRAY
|
|||
phone STRING |
|||
province STRING |
|||
shipping_lines_override
ARRAY
|
|||
updated_at DATE-TIME |
|||
zip STRING |
charges
The charges
table contains info about charges. A charge is a placeholder for an upcoming charge once the charge is processed successfully.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join charges with | on |
---|---|
addresses |
charges.address_id = addresses.id charges.customer_id = addresses.customer_id |
onetimes |
charges.address_id = onetimes.address_id charges.customer_id = onetimes.customer_id charges.line_items.shopify_product_id = onetimes.shopify_product_id charges.line_items.shopify_variant_id = onetimes.shopify_variant_id |
orders |
charges.address_id = orders.address_id charges.id = orders.charge_id charges.customer_id = orders.customer_id charges.line_items.shopify_product_id = orders.line_items.shopify_product_id charges.shopify_order_id = orders.shopify_order_id charges.line_items.subscription_id = orders.line_items.subscription_id charges.transaction_id = orders.transaction_id charges.line_items.shopify_variant_id = orders.line_items.shopify_variant_id |
subscriptions |
charges.address_id = subscriptions.address_id charges.customer_id = subscriptions.customer_id charges.line_items.shopify_product_id = subscriptions.shopify_product_id charges.line_items.subscription_id = subscriptions.id charges.line_items.shopify_variant_id = subscriptions.shopify_variant_id |
customers |
charges.customer_id = customers.id |
products |
charges.line_items.shopify_product_id = products.id |
address_id INTEGER |
|||||||||||||||||
billing_address OBJECT
|
|||||||||||||||||
browser_ip STRING |
|||||||||||||||||
client_details OBJECT
|
|||||||||||||||||
created_at DATE-TIME |
|||||||||||||||||
customer_hash STRING |
|||||||||||||||||
customer_id INTEGER |
|||||||||||||||||
discount_codes
ARRAY
|
|||||||||||||||||
STRING |
|||||||||||||||||
first_name STRING |
|||||||||||||||||
has_uncommited_changes BOOLEAN |
|||||||||||||||||
id INTEGER |
|||||||||||||||||
last_name STRING |
|||||||||||||||||
line_items
ARRAY
|
|||||||||||||||||
note STRING |
|||||||||||||||||
note_attributes
ARRAY
|
|||||||||||||||||
processed_at DATE-TIME |
|||||||||||||||||
processor_name STRING |
|||||||||||||||||
scheduled_at DATE-TIME |
|||||||||||||||||
shipments_count INTEGER |
|||||||||||||||||
shipping_address OBJECT
|
|||||||||||||||||
shipping_lines
ARRAY
|
|||||||||||||||||
shopify_order_id STRING |
|||||||||||||||||
status STRING |
|||||||||||||||||
sub_total STRING |
|||||||||||||||||
subtotal_price STRING |
|||||||||||||||||
tags STRING |
|||||||||||||||||
tax_lines NUMBER |
|||||||||||||||||
total_discounts STRING |
|||||||||||||||||
total_line_items_price STRING |
|||||||||||||||||
total_price STRING |
|||||||||||||||||
total_refunds NUMBER |
|||||||||||||||||
total_tax NUMBER |
|||||||||||||||||
total_weight INTEGER |
|||||||||||||||||
transaction_id STRING |
|||||||||||||||||
type STRING |
|||||||||||||||||
updated_at DATE-TIME |
collections
The collections
table contains info about your collections.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join collections with | on |
---|---|
products |
collections.id = products.collection_id |
created_at DATE-TIME |
description STRING |
id INTEGER |
name STRING |
sort_order STRING |
title STRING |
type STRING |
updated_at DATE-TIME |
customers
The customers
table contains info about customer accounts with a shop.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join customers with | on |
---|---|
addresses |
customers.id = addresses.customer_id |
charges |
customers.id = charges.customer_id |
onetimes |
customers.id = onetimes.customer_id |
orders |
customers.id = orders.customer_id customers.shopify_customer_id = orders.shopify_customer_id |
subscriptions |
customers.id = subscriptions.customer_id |
billing_address1 STRING |
billing_address2 STRING |
billing_city STRING |
billing_company STRING |
billing_country STRING |
billing_phone STRING |
billing_province STRING |
billing_zip STRING |
braintree_customer_token STRING |
created_at DATE-TIME |
STRING |
first_charge_processed_at DATE-TIME |
first_name STRING |
has_card_error_in_dunning BOOLEAN |
has_valid_payment_method BOOLEAN |
hash STRING |
id INTEGER |
last_name STRING |
number_active_subscriptions INTEGER |
number_subscriptions INTEGER |
paypal_customer_token STRING |
processor_type STRING |
reason_payment_method_not_valid STRING |
shopify_customer_id STRING |
status STRING |
updated_at DATE-TIME |
discounts
The discounts
table contains info about discounts.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join discounts with | on |
---|---|
addresses |
discounts.id = addresses.discount_id |
applies_to_id INTEGER |
applies_to_product_type STRING |
applies_to_resource STRING |
code STRING |
created_at DATE-TIME |
duration STRING |
duration_usage_limit INTEGER |
ends_at DATE-TIME |
id INTEGER |
once_per_customer BOOLEAN |
starts_at DATE-TIME |
status STRING |
times_used INTEGER |
updated_at DATE-TIME |
usage_limit INTEGER |
value INTEGER |
metafields_customer
The metafields_customer
table contains info about metafields related to customers.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join metafields_customer with | on |
---|---|
metafields_store |
metafields_customer.owner_id = metafields_store.owner_id |
metafields_subscription |
metafields_customer.owner_id = metafields_subscription.owner_id |
created_at DATE-TIME |
description STRING |
id INTEGER |
key STRING |
namespace STRING |
owner_id INTEGER |
owner_resource STRING |
updated_at DATE-TIME |
value STRING |
value_type STRING |
metafields_store
The metafields_store
table contains info about metafields related to stores.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join metafields_store with | on |
---|---|
metafields_customer |
metafields_store.owner_id = metafields_customer.owner_id |
metafields_subscription |
metafields_store.owner_id = metafields_subscription.owner_id |
created_at DATE-TIME |
description STRING |
id INTEGER |
key STRING |
namespace STRING |
owner_id INTEGER |
owner_resource STRING |
updated_at DATE-TIME |
value STRING |
value_type STRING |
metafields_subscription
The metafields_subscription
table contains info about metafields related to subscriptions.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join metafields_subscription with | on |
---|---|
metafields_customer |
metafields_subscription.owner_id = metafields_customer.owner_id |
metafields_store |
metafields_subscription.owner_id = metafields_store.owner_id |
created_at DATE-TIME |
description STRING |
id INTEGER |
key STRING |
namespace STRING |
owner_id INTEGER |
owner_resource STRING |
updated_at DATE-TIME |
value STRING |
value_type STRING |
onetimes
The onetimes
table contains info about one time products.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join onetimes with | on |
---|---|
addresses |
onetimes.address_id = addresses.id onetimes.customer_id = addresses.customer_id |
charges |
onetimes.address_id = charges.address_id onetimes.customer_id = charges.customer_id onetimes.shopify_product_id = charges.line_items.shopify_product_id onetimes.shopify_variant_id = charges.line_items.shopify_variant_id |
orders |
onetimes.address_id = orders.address_id onetimes.customer_id = orders.customer_id onetimes.shopify_product_id = orders.line_items.shopify_product_id onetimes.shopify_variant_id = orders.line_items.shopify_variant_id |
subscriptions |
onetimes.address_id = subscriptions.address_id onetimes.customer_id = subscriptions.customer_id onetimes.shopify_product_id = subscriptions.shopify_product_id onetimes.shopify_variant_id = subscriptions.shopify_variant_id |
customers |
onetimes.customer_id = customers.id |
products |
onetimes.shopify_product_id = products.id |
address_id INTEGER |
||
created_at DATE-TIME |
||
customer_id INTEGER |
||
id INTEGER |
||
next_charge_scheduled_at DATE-TIME |
||
price NUMBER |
||
product_title STRING |
||
properties
ARRAY
|
||
quantity INTEGER |
||
recharge_product_id INTEGER |
||
shopify_product_id INTEGER |
||
shopify_variant_id INTEGER |
||
sku STRING |
||
status STRING |
||
updated_at DATE-TIME |
||
variant_title STRING |
orders
The orders
table contains info about orders. Orders are created after a charge is successfully processed.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join orders with | on |
---|---|
addresses |
orders.address_id = addresses.id orders.customer_id = addresses.customer_id |
charges |
orders.address_id = charges.address_id orders.charge_id = charges.id orders.customer_id = charges.customer_id orders.line_items.shopify_product_id = charges.line_items.shopify_product_id orders.shopify_order_id = charges.shopify_order_id orders.line_items.subscription_id = charges.line_items.subscription_id orders.transaction_id = charges.transaction_id orders.line_items.shopify_variant_id = charges.line_items.shopify_variant_id |
onetimes |
orders.address_id = onetimes.address_id orders.customer_id = onetimes.customer_id orders.line_items.shopify_product_id = onetimes.shopify_product_id orders.line_items.shopify_variant_id = onetimes.shopify_variant_id |
subscriptions |
orders.address_id = subscriptions.address_id orders.customer_id = subscriptions.customer_id orders.line_items.shopify_product_id = subscriptions.shopify_product_id orders.line_items.subscription_id = subscriptions.id orders.line_items.shopify_variant_id = subscriptions.shopify_variant_id |
customers |
orders.customer_id = customers.id orders.shopify_customer_id = customers.shopify_customer_id |
products |
orders.line_items.shopify_product_id = products.id |
address_id INTEGER |
|||||||||||||||||
address_is_active INTEGER |
|||||||||||||||||
billing_address OBJECT
|
|||||||||||||||||
charge_id INTEGER |
|||||||||||||||||
charge_status STRING |
|||||||||||||||||
created_at DATE-TIME |
|||||||||||||||||
customer_id INTEGER |
|||||||||||||||||
discount_codes
ARRAY
|
|||||||||||||||||
STRING |
|||||||||||||||||
first_name STRING |
|||||||||||||||||
hash STRING |
|||||||||||||||||
id INTEGER |
|||||||||||||||||
is_prepaid INTEGER |
|||||||||||||||||
last_name STRING |
|||||||||||||||||
line_items
ARRAY
|
|||||||||||||||||
note STRING |
|||||||||||||||||
note_attributes
ARRAY
|
|||||||||||||||||
payment_processor STRING |
|||||||||||||||||
processed_at DATE-TIME |
|||||||||||||||||
scheduled_at DATE-TIME |
|||||||||||||||||
shipped_date DATE-TIME |
|||||||||||||||||
shipping_address OBJECT
|
|||||||||||||||||
shipping_date DATE-TIME |
|||||||||||||||||
shipping_lines
ARRAY
|
|||||||||||||||||
shopify_cart_token STRING |
|||||||||||||||||
shopify_customer_id STRING |
|||||||||||||||||
shopify_id STRING |
|||||||||||||||||
shopify_order_id STRING |
|||||||||||||||||
shopify_order_number INTEGER |
|||||||||||||||||
status STRING |
|||||||||||||||||
subtotal_price STRING |
|||||||||||||||||
tags STRING |
|||||||||||||||||
tax_lines
ARRAY
|
|||||||||||||||||
total_discounts NUMBER |
|||||||||||||||||
total_line_items_price NUMBER |
|||||||||||||||||
total_price STRING |
|||||||||||||||||
total_refunds NUMBER |
|||||||||||||||||
total_tax NUMBER |
|||||||||||||||||
total_weight INTEGER |
|||||||||||||||||
transaction_id STRING |
|||||||||||||||||
type STRING |
|||||||||||||||||
updated_at DATE-TIME |
products
The products
table contains info about your products.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join products with | on |
---|---|
collections |
products.collection_id = collections.id |
charges |
products.id = charges.line_items.shopify_product_id |
onetimes |
products.id = onetimes.shopify_product_id |
orders |
products.id = orders.line_items.shopify_product_id |
subscriptions |
products.id = subscriptions.shopify_product_id |
collection_id INTEGER |
||||||||||||
created_at DATE-TIME |
||||||||||||
discount_amount NUMBER |
||||||||||||
discount_type STRING |
||||||||||||
id INTEGER |
||||||||||||
images OBJECT
|
||||||||||||
product_id INTEGER |
||||||||||||
shopify_product_id INTEGER |
||||||||||||
subscription_defaults OBJECT
|
||||||||||||
title STRING |
||||||||||||
updated_at DATE-TIME |
shop
The shop
table contains info about your shop.
Full Table |
|
Primary Key |
id |
Useful links |
checkout_logo_url STRING |
created_at STRING |
currency STRING |
domain STRING |
STRING |
iana_timezone STRING |
id INTEGER |
my_shopify_domain STRING |
name STRING |
shop_email STRING |
shop_phone STRING |
timezone STRING |
updated_at STRING |
subscriptions
The subscriptions
table contains info about subscriptions. Subscriptions are individual items that customers receive on a recurring basis.
Key-based Incremental |
|
Primary Key |
id |
Replication Key |
updated_at |
Useful links |
Join subscriptions with | on |
---|---|
addresses |
subscriptions.address_id = addresses.id subscriptions.customer_id = addresses.customer_id |
charges |
subscriptions.address_id = charges.address_id subscriptions.customer_id = charges.customer_id subscriptions.shopify_product_id = charges.line_items.shopify_product_id subscriptions.id = charges.line_items.subscription_id subscriptions.shopify_variant_id = charges.line_items.shopify_variant_id |
onetimes |
subscriptions.address_id = onetimes.address_id subscriptions.customer_id = onetimes.customer_id subscriptions.shopify_product_id = onetimes.shopify_product_id subscriptions.shopify_variant_id = onetimes.shopify_variant_id |
orders |
subscriptions.address_id = orders.address_id subscriptions.customer_id = orders.customer_id subscriptions.shopify_product_id = orders.line_items.shopify_product_id subscriptions.id = orders.line_items.subscription_id subscriptions.shopify_variant_id = orders.line_items.shopify_variant_id |
customers |
subscriptions.customer_id = customers.id |
products |
subscriptions.shopify_product_id = products.id |
address_id INTEGER |
||
cancellation_reason STRING |
||
cancellation_reason_comments STRING |
||
cancelled_at DATE-TIME |
||
charge_interval_frequency STRING |
||
created_at DATE-TIME |
||
customer_id INTEGER |
||
expire_after_specific_number_of_charges INTEGER |
||
has_queued_charges INTEGER |
||
id INTEGER |
||
is_skippable BOOLEAN |
||
is_swappable BOOLEAN |
||
max_retries_reached INTEGER |
||
next_charge_scheduled_at DATE-TIME |
||
order_day_of_month STRING |
||
order_day_of_week STRING |
||
order_interval_frequency STRING |
||
order_interval_unit STRING |
||
price NUMBER |
||
product_title STRING |
||
properties
ARRAY
|
||
quantity INTEGER |
||
recharge_product_id INTEGER |
||
shopify_product_id INTEGER |
||
shopify_variant_id INTEGER |
||
sku STRING |
||
sku_override STRING |
||
status STRING |
||
updated_at DATE-TIME |
||
variant_title STRING |
Related | Troubleshooting |
Questions? Feedback?
Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.