Better API Documentation and Support Tickets

During the Developer Track at ICON we announced some new features to the Infusionsoft Developer Center. We are excited to release those updates to the developer community!

Better documentation!

The new documentation provides method examples in multiple languages for easy consumption and use. The new layout offers up relevant examples in a faster way so you spend less time looking for the information you need.


New API support tickets!

Easily submit and track the status of your support tickets for the Infusionsoft API team. Share your private app information in a secure environment so our team members can assist you in a timely manner.

To submit a ticket, following these easy steps.

1. Click on “Support” in the Developer Center navigation and select “Create a Support Ticket”


2. Sign in with your Infusionsoft ID.


3. Fill out the form to create a new ticket.


4. To check the status of your tickets, click on My Tickets under the Support tab.


5. Select the ticket you would like to review to see the status and notes.


You can also email to automatically create a ticket.
We will address the tickets in the order we receive them. Please give us 1 business day to respond to your ticket.

Introducing OAuth Refresh Tokens

We are excited to announce improvements to our OAuth implementation! To offer more security for our customers’ data and to eliminate the need for authentication every 90 days, we enabled new, short-lived Access Tokens and indefinite Refresh Tokens for our developers using OAuth.

  1. Authenticate Once, Refresh the Rest– The new indefinite Refresh Token can be used to request a new Access Token to maintain the sync between your app and a user’s Infusionsoft application. This process eliminates the need for a user to re-authenticate every 90 days.

  1. More Secure Customer Data– The new short-lived Access Token is only available for 1 hour which greatly limits the amount of time an unauthorized app can access a customer’s software.

Our developer community frequently asked for indefinite Access Tokens and we solved this request through a combination of new Access and Refresh tokens.

What does this mean for your app?

  • If you are using our legacy API (vendor keys and app generated API keys) this change will not affect you. However, migrating to OAuth will give you access to the new Access and Refresh tokens.
  • For developers using OAuth, you can use the new Access Tokens and Refresh Tokens. Any Access Tokens generated prior to September 15 will continue to work until September 29, at which point we will invalidate existing OAuth Access Tokens. This will cause your app users to re-authenticate hourly. To prevent hourly re-authentication, you will need to update your application to take advantage of the new Refresh Tokens.
  • If you’re using our PHP SDK, you simply need to update to the latest version and follow the directions in the README.

We appreciate the input from our developers and look forward to future releases based on your feedback. If you have questions or comments on this release, post on the Infusionsoft API Facebook group or within the Developer Forums.

Simplifying Infusionsoft Authentication with OAuth2

Currently, there are three ways for users to authenticate and authorize third-party apps to access their Infusionsoft accounts. In an effort to provide developers with better metrics around your API calls and make it easier for customers to grant access to their Infusionsoft account, we are transitioning to OAuth 2.0.

We encourage you to adopt OAuth 2.0 for your apps and integrations as soon as possible. Doing so future-proofs your app and yields a number of benefits, which are explained below.

The three authentication methods developers can use in their solutions are:

  1. Account-level API Access – This requires users to know their account name and supply the API key relevant to their account. Account-level API keys are shared with multiple apps/integrations which makes it impossible to revoke access for just one app/integration. If the user changes their API key all apps/integrations using that key are impacted. We will be sunsetting account-level keys in the future and will announce the official cutoff with ample time to transition your apps to OAuth.

  2. Vendor Key API Access – These keys allow developers to access an Infusionsoft application with a customer’s username and password. Vendor keys were an improvement to account-level keys, but they still have drawbacks. 1) They required developers to store a customer’s sensitive username and password and 2) when a customer changes their password, any apps or integrations using vendor keys no longer work until they get updated with the new credentials.

    Starting July 1, 2014, no new Vendor Keys will be issued. However, existing vendor keys will continue function to function. We will be sunsetting Vendor Keys in the future and will announce the official cutoff with ample time to transition your apps to OAuth.

  3. OAuth 2.0 API Access – This is the new standard authentication method for Infusionsoft apps. OAuth 2.0 is the standard used by most modern APIs including Facebook, Google, Stripe, Shopify and countless others. OAuth will provide a streamlined authentication process for our customers, allow customers to view/revoke access for specific apps/integrations and provide developers with a simplified authentication method as well as more metrics about the applications you create.

Changes to API Throttles

Account-level and Vendor keys operate on a shared API throttling model and don’t provide any visibility into your API usage. API metrics can be very important when you want to know if you’re approaching a throttle. They can also help you troubleshoot performance issues within your app.

By using OAuth 2.0, your apps are throttle independently of one another. When you switch to OAuth, your apps are throttled at the application level and we are able to modify this throttle on a per app or per developer basis. To accomplish this change we are using an API Proxy service that, in addition to providing fine-grained throttling controls, also offers robust reporting tools for API usage.

Why do we have OAuth 2.0 when the other two authentication methods work just fine?

The long-term plan is that the only authentication option for Infusionsoft apps and integrations will be OAuth 2.0. We don’t have a date when this will occur, but when we do, we’ll give all users and developers plenty of time to migrate. Expect that this migration will be graceful, developer-friendly and fair to all those who access our API.

If you’re creating apps or other API solutions with Infusionsoft, build for the future with OAuth 2.0. This will save you time and reassure your users that everything is current and up to date.

If you find that you need to increase to your API throttle (limit), please email <> and we’ll review your request. We are still monitoring API usage across the board to determine what “normal” API throttles look like. The more developers that switch to OAuth 2.0, the more data we’ll have to set throttles appropriately. Thanks for your patience and understanding.

» Read more about using OAuth2 with Infusionsoft in our documentation.

» If you haven’t done so already, register with the Developer Center to create API keys for your apps.

API Changes Found in R30 (Spring Update)

We recently completed our final deployment of our Spring Update which introduced new features and enhancements for our customers as well as a few changes to the API.

Based on the feedback we received about the changes to the API in this update, we will publish upcoming changes to the API with as much advance notice as possible.

API Changes in R30:

  • DataService & Contact Service: Custom Fields are now case-sensitive.

  • Custom Field Validation: Custom Fields are now validated before using it in the query.

  • APIEmailService.sendEmail: Will return false if one or more email addresses are unable to receive marketing emails (opt-out, not marketable).

If you run into any bugs or issues with the Infusionsoft API, check out to see if we’re already working on the issue.

If you experience difficulty with our API, please be sure to post about it on our API Forum where we offer public support for API questions

Campaign Builder for Developers, By a Developer

By Wendel Schultz, Senior Software Engineer

Hello World.

Every technology stack provides you with a cursory introduction on how to get started; the proverbial “Hello World” application. At first brush, integrating with Infusionsoft doesn’t always seem straightforward and obvious. There seems to be an impedance mismatch between the API and Infusionsoft functionality.

The keystone to an effective integration is to understand the Infusionsoft Campaign Builder. This article introduces Campaign Builder from a software design perspective to inform your integration strategy and assist you to effectively leverage Infusionsoft.

To Whom It May Concern.

This article is the first in a series to demystify Infusionsoft from a developer perspective. Computer Science-y terms like asynchronous, ordered list, rules engine, batch jobs and use case are littered throughout; they should help you feel warm inside letting you know you’re in the right place.

As a third-party product, you often times don’t view and use Infusionsoft’s software the way Infusionsoft’s customers do. In many instances, we as developers don’t particularly care to. As a matter of intentional design, we don’t get too close. After all, we aren’t practitioners of the product, right? Our business model and customer focus isn’t on the problems Infusionsoft has already solved; rather, it is the additional problems we solve. Why should we get mired with the nuances of Infusionsoft’s user-facing application? Our world is in the API.

My thoughts have been on you and these questions for a long time now. I’d like to provide what insight I can into these considerations and help you get more out of your Infusionsoft integration.

In this article, you will:

  • Meet Campaign Builder
  • Learn The Four Pillars of the Campaign Builder, identifying use cases
  • Plan to Strategize Effectively: Campaign Builder, the API & You

Act I: Campaign Builder

Confessions of an API.

If you’ve worked with Infusionsoft’s API for any amount of time, you’ll agree that maybe a bit too much detail has leaked through. In the early years of our API, we hadn’t grown enough to know how best to provide our developer partners (you) access to this Golden Goose. In particular, Infusionsoft hasn’t historically provided clear abstractions around high-level platform operations.

For example, getting a complete picture for an order requires: getting the order, setting the line items, creating the invoice, adding the invoice items and recording the payments. Further, a subscription renewal is conceptually equivalent but is modeled in different objects lending to little code reuse. Additionally, “magic strings” are the key to success. We expect consumers of raw data to understand the semantics of that data. This makes for unclear usage models and difficult code handoff. The ambiguous documentation challenges the developer community as well.

As developers, one thing we’ve come to expect from an API is the capability to perform the high-level operations that an application affords the user. In this way, we can provide a near-native experience for the integration. At Infusionsoft, we expose much of our data model, but not enough around our business rules surrounding the data.

To get the most out of your integration, you’ll need to lasso the power of Campaign Builder to minimize the statefulness and complexity of your products.

Why Campaign Builder?

At its core, Infusionsoft is all-in-one small business automation; it detects when things should happen and then initiates responses to those things. The automation ties who is interacting, with what experience the business wants for that prospect or customer. Examples of the experience might include:

  • Attending a webinar
  • Downloading a white paper
  • Purchasing a t-shirt
  • Subscribing to a newsletter
  • Following up after joining some program
  • Reminding about renewals
  • Extending some sort of customer reward (discount or promo)
  • Sending additional information (as part of a sales pipeline)
  • Segmenting customers to better understand and serve them

Whatever the experience is, Infusionsoft’s Campaign Builder allows the business to be very intentional about that piece of the customer journey. (Infusionsoft teaches this journey as Lifecycle Marketing) We developers generally don’t like marketing – though ironically we love processing and analyzing the data to identify patterns and trends.

So that’s why. Campaign Builder is the tool a business uses to create and guide a deliberate user experience with that business. It is a workflow authoring tool, where the “workflow” is the “customer experience.” And, ultimately, the customer’s experience matters.

The irony of that sentiment isn’t lost. As a API user, we recognize that your user experience is suboptimal, but know that we are aggressively working towards making right by our API users, because that is an important experience too!

Act II. The Four Pillars of the Campaign Builder

Not to dawdle any longer, the Four Pillars of the Campaign Builder are:

  1. Campaign Builder is Contact-centric
  2. Campaign Builder is an Event Engine
  3. Goals are Events; Sequences are an Ordered List of Pre-Defined Automated Events
  4. Events beget Sequences

Contact Centric.

Contacts are the core entity at the center of the Infusionsoft CRM. Importing contacts, emailing contacts, filtering contacts, calling contacts and selling to contacts. Contacts can be customers, customers who give the business money and receive value for it, but they can also be leads or prospects. In Campaign Builder, Tasks are always associated with a Contact. In Campaign Builder, Appointments are always associated with a Contact. Custom Fields are always for Contact (while you can have custom fields on other entities like Opportunities, the Campaign Builder doesn’t use them). In particular, you will find in Campaign Builder that you cannot modify other entities such as Order (Job) or Subscription (Job Recurring).

This means that when you think about events, you must understand that the Campaign Builder event is relative to a Contact since Infusionsoft shepherds this contact through a deliberate customer experience.


Campaign Builder consumes events then responds to those events based on the experience that has been laid out. Certain steps in the Campaign Builder (actions) also emit events which can trigger automation, though possibly unknowingly. In the Campaign Builder canvas, campaigns can seem disjoint, unconnected or confusing. Campaigns started losing their mystery once I embraced the asynchronous nature of a campaign’s state transitions.

As a software integration, you can inject into a campaign one particularly powerful event located on FunnelService. With this understanding, “achieveGoal” makes much more sense. Putting a sequence of actions after this event is a piece of automation you alone control — your secret sauce.

Goals and Sequences.

Most of the business world doesn’t think in terms of event loops or asynchronous event handlers. In Campaign Builder, the word “goal” is layman speak for event. A series of reactive pre-defined actions is called a sequence.

Many, many events are sent and trapped inside Infusionsoft, but the events that Campaign Builder responds to and emits are very specific and enumerated. Campaign Builder responds to the following events:

  • User Applies a Tag
  • User Applies a Note
  • User Submits an Internal Form
  • User Completes a (Campaign Builder) Task
  • User Moves an Opportunity
  • A Contact Web Form Submission
  • A Contact Landing Page Form Submission
  • A Contact Link Click
  • A Contact Reaches a Lead Score
  • A Contact Product Purchase
  • GroSocial Form is Submitted
  • Twitter Lead Gen Card is Submitted
  • API Call is Made (via XMLRPC service method FunnelService.achieveGoal)

Campaign Builder can perform the following pre-defined actions in a Sequence:

  • Delay
    • Until a fixed date/time in the future
    • For a fixed delay
    • For a fixed delay after a Contact Field
  • Send Communications
    • Email (via email templates and merged Contact info)
    • Phone Call
    • Fax
    • Send a Letter
  • Apply a Tag
  • Add a Note
  • Create a Task for that Contact
  • Assign an Owner
  • Create an Opportunity
  • Create a Fulfillment List
  • Send Contact Data over an HTTP POST to a configured web resource (via Campaign Builder sequence communication action, HTTP POST)

Goals, Sequences and Flow … OH MY!

As noted above, goals are events; in particular, an event which triggers a sequence to start. Sequences may or may not complete; in the event a subsequent goal is reached, any sequence leading up to that goal is terminated. Following a goal or sequence, flow control can split via a rules engine based on Contact field values. The new flows execute conditionally, including mutually exclusive and parallel concurrent flows. Parallel flows can also join to provide a consistent conclusion.

Side note: As you read through the API documentation and other support resources, keep in mind that the terms “Campaign” is the same, rebranded “Funnel.” Also, a “Sequence” is the same, rebranded “Flow.” A “Tag” is often referenced as “Contact Group” in the documentation.

Act III. Strategies

It was ceremoniously amazing when I had these epiphanies. The first three, in particular, cleared away so much confusion for me. Even working at Infusionsoft, armed with these nuggets of truth I could more easily grok what I needed to do in order to get my campaigns to behave “properly.” The latter two particularly help me make a bit more sense of Campaign Builder’s UI.


Effective Examples. Let’s look at a few common patterns.

  • CustomerHub manages content subscriptions for its customers using Infusionsoft.
  • The holiday season is a great time for a business to reach its audience. Start with a holiday promo campaign and POST out contact interactions to your application to further refine content and offerings or to provide additional insightful analytics for that contact. Then, initiate custom campaign sequences relevant to the targeted segment.
  • Maybe your consultancy wants to build a list of your own customers by offering free consultations.

Additional Functionality.

We are currently in the process of planning the next set of performant, task-based APIs. At some point, we’ll deprecate difficult legacy APIs. We are also committed to ensuring that our partners can continue to achieve the success they’ve come to realize; we don’t intend to retire anything until we provide APIs that are at least as empowering. We love our developer community.

A few examples of APIs we’re considering include:

  • Cleaner, simpler tasks, notes and appointments
  • Full-text heuristic search backed by a scalable search engine such as Lucene (SOLR, Elastic Search, Lucandra/Solandra)

Upcoming Awesome.

For as many exciting bursts of ideas which race through my mind when I think of all this stuff, I can’t help but feel a bit frustrated at the same time. After all, so much of this depends on specific behavior we need to install as a campaign in their Infusionsoft account. Just reading that, most of us had a rush of annoying and brittle documented pages flash through our minds. Screenshots teaching our customers how to create and configure these campaigns. And upgrades. And compatibility. And… and… ugh.

We are mindful of this as well. For some time, we have been working on creating a means whereby third parties (you) can write domain-relevant campaigns, then easily and reliably install that campaign into an Infusionsoft account. Since sometimes, as we’ve seen, a product purchase is the initiating event, you’ll be able to package up products. Similarly, importing this content will create any missing Tags and other resources your campaigns will need. A new tool within Infusionsoft will enable this capability, named the Content Publishing Tool (CPT).

The scope and availability of CPT is still under discussion. Currently we are using it to create the Campaigns offered in the Marketplace and we’re investigating how to introduce third-party content. After all, managing feature-compatible content packages across upgrades is nontrivial and we need to remove as many barriers of entry and maintenance as possible while ensuring maximum reliability for users.

Maybe the fifth pillar of Campaign Builder will be the Content Publishing Tool. With your content offered in the Marketplace, you can focus your efforts on creating then demonstrating the value to customers, not the mechanics of getting your wares installed. When we get closer to that day, we’ll share more about it and its potential.

Announcing the Beta Release of the Infusionsoft PHP SDK

We’re excited to announce the new beta version of the Infusionsoft PHP SDK. We’ve made it even easier for developers to create an app or integration with the Infusionsoft API. 

Focus on What Matters

We handle the OAuth 2.0 integration with our new Developer Center, so that you can spend more time developing your product. 

Clarity & Consistency

Method names are now 100% consistent with the API which should make it a lot less confusing to learn about the SDK methods.

Find Bugs Faster

Debugging is even easier with built-in logging using the Guzzle log interface enabling logs to be sent anywhere. 

Save Time Updating Code

The IS SDK is designed to support our future RESTful API 2.0. As we make changes to the API, you only have to upgrade the SDK – not your code. 

NOTE:  The PHP SDK is currently in beta and there are likely some bugs. We want your feedback! If you find any bugs or have suggestions for improvements, please create an issue on Github.  

Stay tuned for additional SDK announcements. We have an iOS SDK releasing soon!

New Certified Developer Program Coming Soon

We are currently under way to improve our Certified Developer program so our talented individuals who are savvy with our API gain the recognition they deserve among our customers. However, I understand you might have some questions about the new direction of this program. So, I’ll explain some of the changes below

In short, the new direction of our Certified Developer program is intended to assure users and fellow partners that the individuals they are doing business with have significant understanding into our API and can be trusted to create applications, custom integrations and more.

Currently, to become a Certified Developer, one must be a Certified Partner first. After much research and discussions with active members of our developer community, we have concluded that the desires, skills and interests are mutually exclusive. These individuals are incredibly smart, skilled and talented. In fact, this current definition of a Certified Developer will evolve into the highest level of certification known as “System Architect.”

We currently have 26 Certified Developers and envision a time where we could have three times that many developers who have been certified to build rigorous, scalable and profitable solutions that our small business customer base (20,000 accounts) and increasing) need to succeed. And while not every customer will necessarily need custom API development work, we do see that there will always be demand to create solutions that expand on the benefits of our software and integrate with must-have solutions in the small business market.

The future is bright with our Certified Developer program. We appreciate your patience while we make the necessary improvements to have this ready. We look forward to sharing more announcements on this program in the coming months.

Just to be clear, these proposed changes are not yet live and are subject to change.

What would you like to see from our Certified Developer program? Let us know by emailing

Thanks for Your Feedback at ICON14!

In April, we introduced our Developer Track of content at ICON14. Many of you attended to learn more about our API, developer tips and advice on how to take your creations to the next level. We also heard some great feedback on how we can improve your experience as developers on the Infusionsoft platform.

We shared a number of code examples and provided guidance on how to best leverage the Developer Center. While it is under beta, we encourage you to get comfortable with it and provide us feedback so we can improve it even more.

We’d like to discuss several points of feedback we received from all of you below.


Largely, the feedback you shared is that life for you as a developer is not easy. We understand. We are making significant investments to improve our API, documentation and resources so you can go from prototype to production application easily. We learned that a number of you are currently using the older documentation – please consider exploring the API Docs here on the Developer Center so you can maximize your use of our API. We have also introduced an interactive I/O Docs tool to help you quickly find the information you need from an Infusionsoft account.

API Throttling

We’ve also heard some great feedback regarding the API throttling. Today, the Developer Center allows you to generate your own application-specific API authentication keys but with significantly fewer number of total calls per day. We plan to adjust and increase throttling limits to more favorably support your applications in product, but because the current usage is so low, we are unable to identify appropriate new thresholds. Here’s how you can help us identify what “production-grade” API traffic should be:

  • We want developers to build their applications adopting OAuth2 for user authentication and using the API keys provided so we can measure your actual consumption of the API and provide you with better tools.
  • As the need arises where you need to have your API throttling increased, we will work with you to do that. If you find that you are routinely hitting your daily limit, please email <> and we will review your request.
  • In return for increasing these limits, we ask that you exercise all reasonable efforts to cache and store the data in your applications as to minimize the impact on system resources.

We know that there are probably additional questions about this — we’ll address this topic more in-depth in the future.

Developer Essentials

Another interesting takeaway we learned was that not everyone develops applications the same way we do. You told us that you would benefit strongly from tutorials, tips and practical advice on software development practices. For instance, we will be operating webinars where members of our development team will offer guidance on technical subjects that would benefit you.

In the coming months, we will be offering more resources available to all on our Developer Center.

Developer Feedback

Last but not least, a number of you have shared an interest in helping us shape our future developments on our API. We are intentionally focusing on the areas that need the most attention while establishing the development plan for the future. To more actively involve the developer community, we will be taking a page from the Certified Partner program and create a developer-led council on working collaboratively with our internal developers. When we have this ready, we will announce who is on this council and how they will influence the future of our API.

As always, we appreciate your feedback, suggestions and ideas to improve our API and your experience. Please continue to collaborate, share tips and solutions on our Developer Forums and Facebook Page so we can better understand your needs. Toward that end, we appreciate your patience while we create an easily understood road map of our API.

How the Infusionsoft API Helps You Succeed

Oreos are by far one of my favorite kinds of cookies. They have a delicious cream filling that connects two chocolate cookies. What does this have to do with the Infusionsoft API? An API is like the delicious cream filling inside the Oreo, it connects two different programs or services together. Infusionsoft provides access to that cream filling so you can connect its all-in-one sales and marketing software with other great applications. Here’s a brief overview of the Infusionsoft API and how it helps small businesses succeed. In a nutshell, the Infusionsoft API is quite powerful. It extends the functionality of Infusionsoft so it works closely with other applications or services that you use. Every person has a countless number of uses for the API. For instance, you can synchronize contacts when a customer purchases your products from a third-party shopping cart. The API is there silently keeping your business running.

The Rise of the Infusionsoft API

With so many uses, you would think everyone is using the API. Surprisingly, the API has been a hidden gem among some of Infusionsoft’s most successful customers like Jermaine Griggs. Several years ago, only a few hundred people used the API. Today, several thousand use it daily — and they use it extensively. We handle approximately 13 million API calls daily. If those were cereal boxes and you lined them up next to each other, they would go halfway around the moon. As our API has matured, developers have created numerous add-ons for Infusionsoft. The Infusionsoft API enables developers to securely and reliably access and update data inside your Infusionsoft account. We recently launched an updated Marketplace where you can find many of these great Infusionsoft add-ons. A couple of well-known applications that utilize the API include CustomerHub and GroSocial both of which Infusionsoft acquired.

Infusionsoft Marketplace


On the Marketplace, you’ll find Certified Consultants and Certified Developers that will help you grow your business in ways you haven’t even considered. We currently have a very active developer community forum that allows developers to get help and support with the API.

Integrating Your Shopify Story With The Infusionsoft Via The API

One of the most powerful things about Infusionsoft is how easy it is to integrate with your existing business. A versatile marketing platform is going to play nicely with whatever you’re using to build your business.

Infusionsoft has fantastic ecommerce handling built in, but we know that many Infusionsoft customers are using third-party solutions for shopping carts. One of our favorites is Shopify, and we want to make it easy for Shopify store owners to get their customer data into Infusionsoft.

Besides the Infusionsoft suite, one of my favorite tools for the small business entrepreneur is Shopify. They make it easy to setup a full featured ecommerce platform that’s easy to use, SEO optimized, and deploys in just minutes. Their software makes it easy to sell products, and together with Infusionsoft they form a potent combination that makes it easy to both sell and market.

In this tutorial, we’ll be using the Shopify and Infusionsoft API’s to add customers from Shopify into our Infusionsoft marketing database. This allows us to send them follow up emails, collect feedback, and turn them from one time buyers into lifetime customers — all without having to do the heavy lifting of manual list building or transferring.

How Does This Work?

The Shopify API has “Webhooks.” When certain events happen, the Shopify API will take the data associated with that event and send it in a request to an external URL. So when someone checks out in your store, you can enable a Webhook that sends all the order information to the Infusionsoft API.

How Do We Set This Up?

First, we need to enable webhooks in Shopify. This is an easy process.

  1. Login to your account, select Preferences and then Notifications.
  2. From the bottom of that page, select “Add a webhook subscription.”
  3. For our purposes, we’ll ask for a JSON encoded object of the “Customer Creation” webhook.

    The downside to Webhooks is that the application you’re developing must be publicly accessible for Shopify to be able to send the data to it. In order to trouble shoot more effectively I recommend using http://PostCatcher.In They give you a throw away URL you can use to catch the output from Shopify. The JSON returned from Shopify is able to be assigned as a string in PHP, so you can work on your program’s logic without needing to constantly test with Shopify.

    The output is then displayed for you in a web based interface. Here’s a sample of the output:


    In the example code you’ll notice that I hard coded in the response so that I could work on the logic without having to fight with the API. When it’s time to move into production, just comment out the hard coded JSON.



  1. The Shopify API doesn’t send their data with the _POST variable. Instead, they send it in the request body. You’ll need to use PHP’s stream to access the data. In one line, we can get the data, and then JSON decode it.
  2. Shopify is persistent in that they’ll keep trying to deliver the information you want. Once you’ve gotten what you need, it’s courteous to send an HTTP 200 back to let them know all is right with the world.
  3. Since this is public facing, and inputs data into a database, you’ll want to make sure you’re checking that the sender is who they say they are. One way of doing this is including a _GET variable at the end of the URL like, and then checking for it’s existence before executing the code. Shopify also offers a header, “x-shopify-shop-domain” that includes the URL of your store.
  4. Since there is no output from the program, it can be difficult to trouble shoot problems. Using file_put_contents is a helpful way to get a sense of what’s happening. Additionally, if you have error logging enabled you might find some more information in error_log.


    Shopify To Infusionsoft Webhook Handler