|
1 | | -# freemkit |
2 | | -FreemKit |
| 1 | +# FreemKit |
| 2 | + |
| 3 | +[](https://opensource.org/licenses/GPL-2.0) |
| 4 | + |
| 5 | +__Requires at least:__ 6.6 |
| 6 | + |
| 7 | +__Tested up to:__ 6.9 |
| 8 | + |
| 9 | +__Requires PHP:__ 7.4 |
| 10 | + |
| 11 | +__License:__ [GPL-2.0+](http://www.gnu.org/licenses/gpl-2.0.html) |
| 12 | + |
| 13 | +__Plugin page:__ [FreemKit](https://webberzone.com/plugins/freemkit/) |
| 14 | + |
| 15 | +Seamlessly connect your Freemius with Kit email marketing to automate customer communications and marketing workflows. |
| 16 | + |
| 17 | +## Description |
| 18 | + |
| 19 | +WebberZone's FreemKit bridges the gap between Freemius and Kit (formerly ConvertKit) email marketing platforms, enabling WordPress plugin and theme developers to automate subscription workflows and enhance customer communication. |
| 20 | + |
| 21 | +FreemKit receives Freemius webhook events in real time and subscribes customers to Kit forms and tags based on their subscription status. Webhooks are signature-verified using HMAC-SHA256, queued as WP transients, and processed asynchronously via WP-Cron — with deduplication and exponential-backoff retry built in. Subscriber records are persisted locally in a custom database table. |
| 22 | + |
| 23 | +## Key features |
| 24 | + |
| 25 | +- __Real-time Webhook Integration__ — Automatically sync customer data between Freemius and Kit through secure, signature-verified webhooks |
| 26 | +- __Automated List Management__ — Add or remove customers from Kit forms/tags based on their Freemius subscription status |
| 27 | +- __Custom Field Mapping__ — Map Freemius customer data to Kit custom fields for personalised email marketing |
| 28 | +- __Per-plugin Configuration__ — Configure separate free/paid form IDs, tag IDs, and event types for each of your Freemius products |
| 29 | +- __Secure Implementation__ — HMAC-SHA256 signature verification, nonce checks, capability checks, and sanitised input throughout |
| 30 | +- __Flexible Webhook Endpoint__ — Choose between a REST API endpoint or a query variable fallback |
| 31 | +- __Async Processing__ — Webhooks are queued and processed via WP-Cron with deduplication and retry logic |
| 32 | +- __Local Subscriber Records__ — Subscriber data is stored in a custom database table for reference and auditing |
| 33 | +- __Setup Wizard__ — Get started quickly with a guided setup wizard on first activation |
| 34 | +- __Developer-Friendly__ — Extensible through WordPress filters and actions |
| 35 | + |
| 36 | +## Installation |
| 37 | + |
| 38 | +### Manual install |
| 39 | + |
| 40 | +1. Download the latest release from the [releases page](https://github.com/WebberZone/freemkit/releases) |
| 41 | +2. Upload the `freemkit` folder to `/wp-content/plugins/` |
| 42 | +3. Activate the plugin through the __Plugins__ menu in WordPress |
| 43 | +4. Navigate to __Settings → FreemKit__ and connect your Kit account via OAuth |
| 44 | +5. Enter your __Freemius Secret Key__ and register the webhook URL in Freemius |
| 45 | + |
| 46 | +## Setting Up the Freemius Webhook |
| 47 | + |
| 48 | +FreemKit receives events from Freemius in real time via webhooks. You must register the webhook URL in your Freemius Developer Dashboard for the integration to work. |
| 49 | + |
| 50 | +### Step 1 — Find your Webhook URL |
| 51 | + |
| 52 | +Go to __Settings → FreemKit → Webhook__ in your WordPress admin. The plugin shows the correct URL based on your chosen endpoint type: |
| 53 | + |
| 54 | +| Endpoint type | URL format | |
| 55 | +|---|---| |
| 56 | +| REST API *(recommended)* | `https://yourdomain.com/wp-json/freemkit/v1/webhook` | |
| 57 | +| Query variable | `https://yourdomain.com/?freemkit_webhook=1` | |
| 58 | + |
| 59 | +You can switch between the two under __Webhook Endpoint Type__ on the same settings page. |
| 60 | + |
| 61 | +### Step 2 — Register the webhook in Freemius |
| 62 | + |
| 63 | +1. Log in to the [Freemius Developer Dashboard](https://dashboard.freemius.com) and open your product |
| 64 | +2. Go to __Integrations → Webhooks → Listeners__ and click __Add Webhook__ |
| 65 | +3. Paste the Webhook URL from Step 1 |
| 66 | +4. Choose the events to subscribe to. Recommended minimum: |
| 67 | + - `install.installed` — fires when a user installs your product (maps to free users) |
| 68 | + - `license.created` — fires when a paid license is created (maps to paid users) |
| 69 | +5. Save the webhook. You can activate it immediately or defer activation. |
| 70 | + |
| 71 | +### Step 3 — Add your Freemius Secret Key |
| 72 | + |
| 73 | +Freemius signs every webhook request with your product's __Secret Key__ using HMAC-SHA256. FreemKit verifies this signature and will reject any request that doesn't match. |
| 74 | + |
| 75 | +1. In the Freemius Developer Dashboard, go to your product's __Settings → General__ and copy the __Secret Key__ |
| 76 | +2. Paste it into __Settings → FreemKit → Freemius Secret Key__ and save |
| 77 | + |
| 78 | +## Configuration |
| 79 | + |
| 80 | +After activation, the setup wizard guides you through the initial configuration. You can also configure the plugin at __Settings → FreemKit__: |
| 81 | + |
| 82 | +1. __Connect Kit__ — Authenticate via OAuth to link your Kit account |
| 83 | +2. __Set Global Defaults__ — Configure default Kit form/tag IDs for free and paid users |
| 84 | +3. __Per-plugin Overrides__ — Set separate form IDs, tag IDs, and event types per Freemius product |
| 85 | +4. __Custom Field Mapping__ — Map Freemius customer data fields to Kit custom fields |
| 86 | +5. __Webhook Settings__ — Choose your endpoint type and review the webhook URL to register in Freemius |
| 87 | + |
| 88 | +## Development |
| 89 | + |
| 90 | +```bash |
| 91 | +# Lint PHP (WordPress coding standards) |
| 92 | +composer phpcs |
| 93 | + |
| 94 | +# Auto-fix PHP code style |
| 95 | +composer phpcbf |
| 96 | + |
| 97 | +# Static analysis |
| 98 | +composer phpstan |
| 99 | + |
| 100 | +# Run all checks |
| 101 | +composer test |
| 102 | + |
| 103 | +# Build JS/CSS assets |
| 104 | +npm run build |
| 105 | + |
| 106 | +# Watch mode |
| 107 | +npm start |
| 108 | +``` |
| 109 | + |
| 110 | +## Other plugins by WebberZone |
| 111 | + |
| 112 | +FreemKit is one of the many plugins developed by WebberZone. Check out our other plugins: |
| 113 | + |
| 114 | +- [Contextual Related Posts](https://wordpress.org/plugins/contextual-related-posts/) - Display related posts on your WordPress blog and feed |
| 115 | +- [Top 10](https://wordpress.org/plugins/top-10/) - Track daily and total visits to your blog posts and display the popular and trending posts |
| 116 | +- [WebberZone Snippetz](https://wordpress.org/plugins/add-to-all/) - The ultimate snippet manager for WordPress to create and manage custom HTML, CSS or JS code snippets |
| 117 | +- [Knowledge Base](https://wordpress.org/plugins/knowledgebase/) - Create a knowledge base or FAQ section on your WordPress site |
| 118 | +- [Better Search](https://wordpress.org/plugins/better-search/) - Enhance the default WordPress search with contextual results sorted by relevance |
| 119 | +- [Auto-Close](https://wordpress.org/plugins/autoclose/) - Automatically close comments, pingbacks and trackbacks and manage revisions |
| 120 | +- [Popular Authors](https://wordpress.org/plugins/popular-authors/) - Display popular authors in your WordPress widget |
| 121 | +- [Followed Posts](https://wordpress.org/plugins/where-did-they-go-from-here/) - Show a list of related posts based on what your users have read |
| 122 | + |
| 123 | +## Contribute |
| 124 | + |
| 125 | +FreemKit is also available on [GitHub](https://github.com/WebberZone/freemkit). |
| 126 | +So, if you've got a cool feature you'd like to implement in the plugin or a bug you've fixed, consider forking the project and sending me a pull request. |
| 127 | + |
| 128 | +Bug reports are [welcomed on GitHub](https://github.com/WebberZone/freemkit/issues). Please note that GitHub is *not* a support forum, and issues that aren't suitably qualified as bugs will be closed. |
| 129 | + |
| 130 | +## Support |
| 131 | + |
| 132 | +- __Documentation__: [webberzone.com/support/freemkit/](https://webberzone.com/support/freemkit/) |
| 133 | +- __GitHub Issues__: [github.com/WebberZone/freemkit/issues](https://github.com/WebberZone/freemkit/issues) |
| 134 | + |
| 135 | +## Translations |
| 136 | + |
| 137 | +FreemKit is available for [translation directly on WordPress.org](https://translate.wordpress.org/projects/wp-plugins/freemkit). Check out the official [Translator Handbook](https://make.wordpress.org/polyglots/handbook/plugin-theme-authors-guide/) to contribute. |
| 138 | + |
| 139 | +## License |
| 140 | + |
| 141 | +This plugin is licensed under the GPL-2.0+ license. |
| 142 | + |
| 143 | +## Credits |
| 144 | + |
| 145 | +FreemKit is developed and maintained by [WebberZone](https://webberzone.com/). |
| 146 | + |
| 147 | +## About this repository |
| 148 | + |
| 149 | +This GitHub repository always holds the latest development version of the plugin. Beta and stable releases are made available under [releases](https://github.com/WebberZone/freemkit/releases). |
0 commit comments