Welcome to the PartnerStack Integration Docs

Here you can find guides, documentation, support and FAQs to get you setup on PartnerStack.

Chat with us by clicking the message bubble in the bottom right if you are having any trouble!

Get Started

Chargify Webhook

If you use Chargify to track customer purchases, you can set up a webhook integration so PartnerStack can listen for events relating to charges and subscriptions. Once we receive information about a customer paying for your product, we can record that payment in PartnerStack and ensure your partners are properly attributed!


Heads up!

To use this integration, a customer record must already exist for the customer paying for your product in PartnerStack. You can track customer signups by using PartnerStackJS or the PartnerStack API.

Supported Chargify Events

Our platform can listen for the following events as described in Chargify's Webhook Documentation:

  • payment_success: When we receive this event, a transaction is recorded under the associated customer record in PartnerStack
  • signup_success: When we receive this event, a subscription is recorded under the customer record in PartnerStack, so you have visibility into any subscription plans a customer is paying for. A subscription alone does not create transactions (the payment_success event is the only event that does this)
  • subscription_state_change, subscription_product_change, component_allocation_change: All of these events modify the subscription shown for a customer in PartnerStack

Get your Webhook URL

Navigate to Settings > Integrations > Webhooks and select Chargify from the Supported integrations.

Click the copy button to copy the URL to your clipboard.

Create the Webhook on the Chargify Dashboard

Go to Settings in the topbar, then Webhooks on the left pannel. Click the enable webhooks checkbox then the Add New Webhook button. Paste the chargify webhook URL into the wehbook endpoints input field, then select Payment Success, Signup Success, Subscription State Change, and Component Allocation Change from the webhook subscriptions list.

Set customer key as Customer Reference

Whenever you interact with Chargify to record transactions under a customer, you need to let PartnerStack know which customer you're referring to. At PartnerStack, we identify customers using their customer key. This can be any value that uniquely identifies customers on your platform, for example their email address.

If you're using PartnerStackJS, this would be the value you used for growsumo.data.customer_key when the customer signed up. If you used our PartnerStack API to create the customer record, this would be the value you passed as the key.

When PartnerStack receives the webhook from Chargify, the platform tries to find a customer with the same customer_key as the customer reference in Chargify. Please ensure these match, or the transaction will not be properly recorded.

In your code, it should look something like the following. However, the implementation may vary depending on how you interact with the Chargify product and API at your company. We recommend consulting the Chargify Developer documentation to check how to set the reference field for a customer.

ADD `reference` to `customer_attributes`
Make sure it matches the `customer_key` used with PartnerStackJS

# import requests
# import json
# import base64

# headers = {
#     'Authorization': 'Basic {}'.format(base64.b64encode('chargify_api_key')),
#     'Content-Type': 'application/json'
# }

# request_url = 'https://<your_subdomain>.chargify.com/subscriptions.json'

# subscription = {
#   "subscription": {
#     "product_handle": "pro-plan",
#     "customer_attributes": {
#         "first_name": "John",
#         "last_name": "Doe",
#         "email": "[email protected]",
        "reference": <YOUR_CUSTOMER_KEY>
#     },
#     "credit_card_attributes": {
#         "full_number": "1",
#         "expiration_month": "10",
#         "expiration_year": "2020"
#     },
#   }
# }

# create_subscription = requests.post(request_url, headers=headers, data=json.dumps(subscription))
# example for https://github.com/chargify/chargify_api_ares
ADD `reference` to `customer_attributes`
MAKE SURE it matches the `customer_key` used with GrowSumoJS

#require 'chargify_api_ares'

#Chargify.configure do |c|
#  c.api_key   = "chargify_api_key"
#  c.subdomain = "yoursubdomain.chargify.com"

# Chargify::Subscription.create(
#   :customer_attributes => {
#       :first_name => "John",
#       :last_name => "Doe",
#       :email => '[email protected]',
      :reference => <YOUR_CUSTOMER_KEY>
#   }
#   :product_handle => 'test',
# payment profile attributes
#   :credit_card_attributes => {
#     :first_name => "John",
#     :last_name => "Doe",
#     :expiration_month => 1,
#     :expiration_year => 2010,
#     :full_number => "1234-1234-1234-1234"
#   }
# )
<!-- https://github.com/chargely/chargify-sdk-php -->
ADD `reference` to `customer_attributes`
MAKE SURE it matches the `customer_key` used with GrowSumoJS

// use Crucial\Service\Chargify;
// $chargify = new Chargify([
//     'hostname'   => 'yoursubdomain.chargify.com',
//     'api_key'    => '{{API_KEY}}',
//     'shared_key' => '{{SHARED_KEY}}'
// ]);
// $subscription = $chargify->subscription()
//     ->setProductHandle('my_product')
//     ->setCustomerAttributes([
//         'first_name' => '{{John}}',
//         'last_name' => '{{Doe}}',
//         'email' => '{{[email protected]}}',
        'reference' => '{{<YOUR_CUSTOMER_KEY>}}',
//    ])
// payment profile attributes
//   ->setPaymentProfileAttributes([
//       'first_name'       => '{{FIRST_NAME}}',
//       'last_name'        => '{{LAST_NAME}}',
//       'full_number'      => '{{CC_NUMBER}}',
//       'expiration_month' => '{{EXPIRY_MONTH}}',
//       'expiration_year'  => '{{EXPIRY_YEAR}}',
//       'cvv'              => '{{CVV}}',
//       'billing_address'  => '{{ADDRESS}}',
//       'billing_city'     => '{{CITY}}',
//       'billing_state'    => '{{STATE}}',
//       'billing_zip'      => '{{ZIP}}',
//       'billing_country'  => '{{COUNTRY}}'
//  ])
// -> create();
// example for https://github.com/natevw/node-chargify
ADD `reference` to `customer_attributes`
MAKE SURE it matches the `customer_key` used with GrowSumoJS

// var chargify = require('chargify')
// var chargify_site = chargify('chargify_subdomain', 'chargify_api_key')
// chargify_site.post({
//     uri: 'subscriptions.json',
//     json: {
//        "subscription": {
//            "product_handle": "basic",
           "customer_reference": <YOUR_CUSTOMER_KEY>,
//            "credit_card_attributes": {
//                "full_number": "1",
//                "expiration_month": "10",
//                "expiration_year": "2020"
//            }
//        }
//     }, function (err, res, body) {
//         if (err) throw err;
//         console.log(res.statusCode);
//         console.log(body);
//     }
// });

Setup Subscription Plans

If you have any subscription-based plans set up on Chargify, now is the time to set them up on PartnerStack. This is optional, but will allow subscriptions to be shown for your customers on your dashboard.

You need to make sure that the plan key on PartnerStack matches the product id on Chargify. You can find your plans on Chargify by going to your dashboard and changing the path to https://<yoursubdomain>.chargify.com/products.

Create all your plans in PartnerStack and you are good to go! You can create plans by heading to Settings > Integrations > Company Plans on your dashboard and clicking on "Create plan".

Updated 4 months ago

Chargify Webhook

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.