{"id":4453,"date":"2016-05-23T14:34:11","date_gmt":"2016-05-23T12:34:11","guid":{"rendered":"https:\/\/chartmogul.com\/blog\/?p=4453"},"modified":"2023-08-10T12:10:44","modified_gmt":"2023-08-10T10:10:44","slug":"cronofy-integrated-chartmogul-import-api","status":"publish","type":"post","link":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/","title":{"rendered":"How Cronofy integrated the ChartMogul Import API"},"content":{"rendered":"<h1>Cronofy: Powerful calendar infrastructure as a service<\/h1>\n<p><a href=\"https:\/\/cronofy.com\">Cronofy<\/a> is an API-based Calendar service which powers a number of top web-based products like Zendesk, Skyscanner and more. The value in their business is in allowing customers to easily integrate calendar-based features to their platform, with support for all of the top calendar services.<\/p>\n<figure id=\"attachment_4460\" aria-describedby=\"caption-attachment-4460\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-4460\" src=\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-1024x563.jpg\" alt=\"Skyscanner homepage\" width=\"1024\" height=\"563\" srcset=\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-1024x563.jpg 1024w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-300x165.jpg 300w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-768x422.jpg 768w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-720x396.jpg 720w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-1920x1055.jpg 1920w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-1024x563@2x.jpg 2048w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-300x165@2x.jpg 600w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-768x422@2x.jpg 1536w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/skyscanner-720x396@2x.jpg 1440w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption id=\"caption-attachment-4460\" class=\"wp-caption-text\">Trip-booking scenarios are just one use case for the Cronofy product. Cronofy drives the calendar features of Skyscanner, for exactly this reason.<\/figcaption><\/figure>\n<p>We asked <a href=\"https:\/\/twitter.com\/adambird\">Adam Bird<\/a>, Cronofy\u2019s CEO to give us a detailed rundown of their experience with the ChartMogul Import API.<\/p>\n<h2>On building their own billing engine<\/h2>\n<p>Cronofy has built their own internal billing system, which handles creation of statements, bills and pricing calculations. They then use <a href=\"https:\/\/www.xero.com\">Xero<\/a> (via an API integration) to generate invoices and handle the ever-complex tax calculations.<\/p>\n<p>Cronofy\u2019s pricing model has a number of intricacies that require some thought when it comes to handling the billing data:<\/p>\n<p><strong>Adam:<\/strong> <em>Our standard billing approach is to charge a monthly plan fee for up to a set number of users and then a unit fee per user thereafter. However, we also charge on a pure usage basis for some customers, generally larger accounts, with a threshold-based rate that can result in multiple unit prices as a customer transitions through the usage bands.<\/em><\/p>\n<h2>Getting started with the Import API<\/h2>\n<p>Being a Ruby-based product, the folks at Cronofy immediately looked for a gem to install which would handle communication and authentication with the API itself. Unfortunately this didn\u2019t exist at the time\u2026 so they created one! You can find it <a href=\"https:\/\/github.com\/chartmogul\/chartmogul-ruby\">here on Github<\/a>.<\/p>\n<p><strong>Adam<\/strong>:<em> ChartMogul\u2019s Import API docs are absolutely the place to start and cover the key concepts you need to understand for a successful integration.<\/em><\/p>\n<p>We\u2019d definitely echo Adam\u2019s advice here &#8212; read the manual! We\u2019ve put a lot of work into making our documentation and Developer Hub easy to consume, and it\u2019ll walk you through the essential parts of the integration. Of course, we\u2019re always here to help if you get stuck\u2026<\/p>\n<figure id=\"attachment_4462\" aria-describedby=\"caption-attachment-4462\" style=\"width: 720px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/dev.chartmogul.com\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full-column wp-image-4462\" src=\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/dev-hub-720x631.png\" alt=\"The ChartMogul Developer Hub is always the best place to start, when integrating any of the ChartMogul APIs.\" width=\"720\" height=\"631\" srcset=\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/dev-hub-720x631.png 720w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/dev-hub-300x263.png 300w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/dev-hub-768x673.png 768w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/dev-hub-1024x898.png 1024w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/dev-hub.png 1576w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/dev-hub-720x631@2x.png 1440w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/dev-hub-300x263@2x.png 600w, https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/dev-hub-768x673@2x.png 1536w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><figcaption id=\"caption-attachment-4462\" class=\"wp-caption-text\">The ChartMogul Developer Hub is always the best place to start, when integrating any of the ChartMogul APIs.<\/figcaption><\/figure>\n<h2>The technical details<\/h2>\n<p>There are three key objects that are important in the ChartMogul platform: Customers, Plans, Invoices. Pushing billing data into ChartMogul involves creating or modifying instances of these objects.<\/p>\n<h3>Creating Customers<\/h3>\n<p>Customers are somewhat straightforward. A Customer object represents a \u201creal-life\u201d customer in your subscription product.<\/p>\n<p><strong>Adam\u2019s input\u00a0here:<\/strong><\/p>\n<p><em>You need <code>customer_uuid<\/code> for the Invoice creation. Make sure you include the country as that gives you access to the regional segmentation features.<\/em><\/p>\n<p><em>You can add an <code>external_id<\/code> which is enforced unique so will return a <code>422 Unprocessable Entity<\/code> if you try and create a duplicate record. I\u2019d love to see the ability to lookup, something like:<\/em><\/p>\n<pre><code>GET \/v1\/import\/customers?external_id=12345<\/code><\/pre>\n<p><em>and get a 404 to indicate that a customer record needs to be added.<\/em><\/p>\n<p><em>At the moment, when generating an invoice, we have to retrieve the entire Customer list to discover if that customer has been added or not.<\/em><\/p>\n<h3>Defining Plans<\/h3>\n<p>Every transaction that happens in ChartMogul (i.e. every invoice) must be related to a plan. Plans represent the subscription plan that the customer is subscribed to, and holds important information like the billing interval.<\/p>\n<p><strong>In Adam\u2019s words:<\/strong><\/p>\n<p><em>Plan definition for us was really just about the name. We only needed a monthly interval for any of our plans. An Invoice comprises a series of line_items, each of which is assigned to a plan. This is used to generate a subscription for that customer, which in turn is rendered in the Chart Mogul UI.<\/em><\/p>\n<p><em>Similarly to Customers, you have to ensure a plan has been imported via <code>\/v1\/import\/plans<\/code> before it can be used in a <code>line_item<\/code>. In our code we lazy insert plans at the point of importing Invoices, which means we don\u2019t have to worry about coordinating a two-part sync.<\/em><\/p>\n<p><em>Our method for this is similar to the following:<\/em><\/p>\n<pre><code>def get_plan_uuid\r\n  @plans ||= Hash[chart_mogul\r\n            .list_plans\r\n            .map { |p| [p.external_id, p.uuid] }]\r\n\r\n  unless @plans[plan_id]\r\n    record = {\r\n      external_id: plan_id,\r\n      data_source_uuid: chart_mogul_data_source_uuid,\r\n      name: plan_id,\r\n      interval_count: 1,\r\n      interval_unit: :month,\r\n    }\r\n\r\n    plan = chart_mogul.import_plan(record)\r\n    @plans[plan_id] = plan.uuid\r\n  end\r\n\r\n  @plans[plan_id]\r\nend<\/code><\/pre>\n<h3>Importing invoices<\/h3>\n<p>The Invoice is the all-important object in ChartMogul which holds information related to the customer\u2019s purchase of your service. Invoices are comprised of:<\/p>\n<ul>\n<li>One or more Line Items, which represent the kind of service or product being billed and contain some details about them.<\/li>\n<li>One or more Transactions, which represent charge or refund attempts to the customer.<\/li>\n<\/ul>\n<p>From these invoices, ChartMogul automatically creates subscriptions and metrics from invoices, so they\u2019re critical to the system!<\/p>\n<p><strong>Adam<\/strong>:<em> In our case I decided to collapse all of our statement lines into one <code>line_item<\/code> and not worry too much about differentiating between fixed fees and add-ons. This is one of those philosophical points that can be argued either way. The other attribute of <code>line_item<\/code>s to consider is quantity. One little gotcha is if you pass a quantity of zero then this will result in the <code>line_item<\/code> being ignored by the Subscription, even if the <code>amount_in_cents<\/code> has a value.<\/em><\/p>\n<p><strong>A quick word on overages<\/strong><\/p>\n<p><strong>Adam:<\/strong> <em>Given the nature of our service we consider overages not as ad-hoc but as MRR. Each unit represents a user whose calendars have been synchronized with our platform. This is an ongoing relationship which generally grows as our customers grow, ultimately resulting in a transition to a high monthly commitment. We do allow customers to automatically transition between plans as their usage grows or shrinks, which makes plan fee + overage fee just feel like a formula for calculating MRR rather than representing different types of revenue.<\/em><\/p>\n<h1>Final thoughts<\/h1>\n<p>We\u2019re hugely grateful to Adam and the Cronofy team for working with us throughout the Import API beta, identifying issues and giving us detailed feedback along the way. With their help, we\u2019ve now shipped the first public release of the API, opening the doors for virtually anyone to push custom billing data into their ChartMogul account.<\/p>\n<p>I\u2019ll leave the final word to Adam:<\/p>\n<p><em>As we&#8217;ve been building out this integration, we&#8217;ve wiped away and resynced the data several times to get us to something that we feel represents our business. So we may well restate this in the future \u2014 such is the power of being able to visualize your financial data in this way.<\/em><\/p>\n<p><em>Fundamentally, Vinay and the team have given a lot of thought to how to make this work with other systems, have obviously spent a lot of time on the docs and tutorials and have been super responsive whenever I was scratching my head. We&#8217;re fully committed users now and look forward to seeing how the service and, especially the Import API, evolves.<\/em><\/p>\n<p><em>The guys at ChartMogul have a built a fantastic solution for SaaS financial KPI reporting. Being able to take advantage of that with what amounts to a custom billing system is inordinately valuable to anyone with a SaaS business.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the last few months we&#8217;ve been working with Cronofy as a Beta partner for our Import API. In this post, CEO Adam Bird sheds some light on the details of their setup, and the integration process itself.<\/p>\n","protected":false},"author":9,"featured_media":4455,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39],"tags":[119,45,34],"class_list":["post-4453","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-product-updates","tag-api","tag-case-study","tag-customer"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How Cronofy integrated the ChartMogul Import API<\/title>\n<meta name=\"description\" content=\"Cronofy CEO Adam Bird gives sheds some light on the details of the company&#039;s setup, and the integration process with the Import API itself.\" \/>\n<meta name=\"robots\" content=\"index, follow\" \/>\n<link rel=\"canonical\" href=\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Cronofy integrated the ChartMogul Import API\" \/>\n<meta property=\"og:description\" content=\"Cronofy CEO Adam Bird gives sheds some light on the details of the company&#039;s setup, and the integration process with the Import API itself.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/\" \/>\n<meta property=\"og:site_name\" content=\"ChartMogul\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/chartmogul\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-23T12:34:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-10T10:10:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ed Shelley\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Mr_Ed\" \/>\n<meta name=\"twitter:site\" content=\"@chartmogul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ed Shelley\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/\"},\"author\":{\"name\":\"Ed Shelley\",\"@id\":\"https:\/\/chartmogul.com\/blog\/#\/schema\/person\/55ca03cbfebabf05e94258e529620fcb\"},\"headline\":\"How Cronofy integrated the ChartMogul Import API\",\"datePublished\":\"2016-05-23T12:34:11+00:00\",\"dateModified\":\"2023-08-10T10:10:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/\"},\"wordCount\":1151,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg\",\"keywords\":[\"api\",\"case study\",\"customer\"],\"articleSection\":[\"Product Updates\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/\",\"url\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/\",\"name\":\"How Cronofy integrated the ChartMogul Import API\",\"isPartOf\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg\",\"datePublished\":\"2016-05-23T12:34:11+00:00\",\"dateModified\":\"2023-08-10T10:10:44+00:00\",\"description\":\"Cronofy CEO Adam Bird gives sheds some light on the details of the company's setup, and the integration process with the Import API itself.\",\"breadcrumb\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#primaryimage\",\"url\":\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg\",\"contentUrl\":\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg\",\"width\":1440,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/chartmogul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How Cronofy integrated the ChartMogul Import API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/chartmogul.com\/blog\/#website\",\"url\":\"https:\/\/chartmogul.com\/blog\/\",\"name\":\"ChartMogul\",\"description\":\"Get all your SaaS &amp; Subscription Metrics with a Single Click! MRR, churn, LTV and much more.\",\"publisher\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/chartmogul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/chartmogul.com\/blog\/#organization\",\"name\":\"ChartMogul\",\"url\":\"https:\/\/chartmogul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/chartmogul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2019\/05\/ChartMogul-Logo.png\",\"contentUrl\":\"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2019\/05\/ChartMogul-Logo.png\",\"width\":278,\"height\":52,\"caption\":\"ChartMogul\"},\"image\":{\"@id\":\"https:\/\/chartmogul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/chartmogul\",\"https:\/\/x.com\/chartmogul\",\"https:\/\/www.linkedin.com\/company\/chartmogul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/chartmogul.com\/blog\/#\/schema\/person\/55ca03cbfebabf05e94258e529620fcb\",\"name\":\"Ed Shelley\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/chartmogul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0266c82a7f8c5d908b6e777ae14b3f52031ea56eb421b3624c74426e07c751c5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0266c82a7f8c5d908b6e777ae14b3f52031ea56eb421b3624c74426e07c751c5?s=96&d=mm&r=g\",\"caption\":\"Ed Shelley\"},\"description\":\"Former Director of Content\",\"sameAs\":[\"http:\/\/@Mr_Ed\",\"https:\/\/x.com\/Mr_Ed\"],\"url\":\"https:\/\/chartmogul.com\/blog\/author\/ed\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How Cronofy integrated the ChartMogul Import API","description":"Cronofy CEO Adam Bird gives sheds some light on the details of the company's setup, and the integration process with the Import API itself.","robots":{"index":"index","follow":"follow"},"canonical":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/","og_locale":"en_US","og_type":"article","og_title":"How Cronofy integrated the ChartMogul Import API","og_description":"Cronofy CEO Adam Bird gives sheds some light on the details of the company's setup, and the integration process with the Import API itself.","og_url":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/","og_site_name":"ChartMogul","article_publisher":"https:\/\/www.facebook.com\/chartmogul","article_published_time":"2016-05-23T12:34:11+00:00","article_modified_time":"2023-08-10T10:10:44+00:00","og_image":[{"width":1440,"height":600,"url":"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg","type":"image\/jpeg"}],"author":"Ed Shelley","twitter_card":"summary_large_image","twitter_creator":"@Mr_Ed","twitter_site":"@chartmogul","twitter_misc":{"Written by":"Ed Shelley","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#article","isPartOf":{"@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/"},"author":{"name":"Ed Shelley","@id":"https:\/\/chartmogul.com\/blog\/#\/schema\/person\/55ca03cbfebabf05e94258e529620fcb"},"headline":"How Cronofy integrated the ChartMogul Import API","datePublished":"2016-05-23T12:34:11+00:00","dateModified":"2023-08-10T10:10:44+00:00","mainEntityOfPage":{"@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/"},"wordCount":1151,"commentCount":0,"publisher":{"@id":"https:\/\/chartmogul.com\/blog\/#organization"},"image":{"@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#primaryimage"},"thumbnailUrl":"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg","keywords":["api","case study","customer"],"articleSection":["Product Updates"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/","url":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/","name":"How Cronofy integrated the ChartMogul Import API","isPartOf":{"@id":"https:\/\/chartmogul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#primaryimage"},"image":{"@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#primaryimage"},"thumbnailUrl":"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg","datePublished":"2016-05-23T12:34:11+00:00","dateModified":"2023-08-10T10:10:44+00:00","description":"Cronofy CEO Adam Bird gives sheds some light on the details of the company's setup, and the integration process with the Import API itself.","breadcrumb":{"@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#primaryimage","url":"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg","contentUrl":"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2016\/05\/cronofy-1.jpg","width":1440,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/chartmogul.com\/blog\/cronofy-integrated-chartmogul-import-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/chartmogul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How Cronofy integrated the ChartMogul Import API"}]},{"@type":"WebSite","@id":"https:\/\/chartmogul.com\/blog\/#website","url":"https:\/\/chartmogul.com\/blog\/","name":"ChartMogul","description":"Get all your SaaS &amp; Subscription Metrics with a Single Click! MRR, churn, LTV and much more.","publisher":{"@id":"https:\/\/chartmogul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/chartmogul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/chartmogul.com\/blog\/#organization","name":"ChartMogul","url":"https:\/\/chartmogul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/chartmogul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2019\/05\/ChartMogul-Logo.png","contentUrl":"https:\/\/chartmogul.com\/blog\/wp-content\/uploads\/2019\/05\/ChartMogul-Logo.png","width":278,"height":52,"caption":"ChartMogul"},"image":{"@id":"https:\/\/chartmogul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/chartmogul","https:\/\/x.com\/chartmogul","https:\/\/www.linkedin.com\/company\/chartmogul\/"]},{"@type":"Person","@id":"https:\/\/chartmogul.com\/blog\/#\/schema\/person\/55ca03cbfebabf05e94258e529620fcb","name":"Ed Shelley","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/chartmogul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0266c82a7f8c5d908b6e777ae14b3f52031ea56eb421b3624c74426e07c751c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0266c82a7f8c5d908b6e777ae14b3f52031ea56eb421b3624c74426e07c751c5?s=96&d=mm&r=g","caption":"Ed Shelley"},"description":"Former Director of Content","sameAs":["http:\/\/@Mr_Ed","https:\/\/x.com\/Mr_Ed"],"url":"https:\/\/chartmogul.com\/blog\/author\/ed\/"}]}},"_links":{"self":[{"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/posts\/4453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/comments?post=4453"}],"version-history":[{"count":10,"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/posts\/4453\/revisions"}],"predecessor-version":[{"id":19678,"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/posts\/4453\/revisions\/19678"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/media\/4455"}],"wp:attachment":[{"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/media?parent=4453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/categories?post=4453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chartmogul.com\/blog\/wp-json\/wp\/v2\/tags?post=4453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}