=== Donatico - Stripe Donations & Recurring Giving ===
Contributors: mamunitiw
Tags: donations, stripe, recurring donations, fundraising, donation form
Requires at least: 5.3
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.6.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Accept Stripe donations on WordPress - clean, lightweight donation forms with goal tracking, donor management, and recurring giving in Pro.

== Description ==

Donatico is a clean, lightweight WordPress plugin focused on one thing and doing it well: accepting donations via Stripe. No bloat, no page-builder dependency, no account on someone else's platform - just beautiful donation forms on your own site, funds in your own Stripe account.

Perfect for non-profits, charities, churches, content creators, podcasters, and any organisation that wants a simple, professional donation system without the weight of an all-in-one fundraising suite.

= Free Features =

* **Stripe Checkout Integration** - Secure, Stripe-hosted payment page; card details never touch your server
* **3 Form Layouts** - Inline, Stacked, and Card designs
* **5 Shortcodes** - Forms, total raised, donation count, recent donors, progress bar
* **Beautiful Email Notifications** - Admin alerts and donor thank-you emails with merge tags
* **Donation Dashboard** - Total raised, donation count, average amount, monthly stats
* **Donation Management** - Full list with status filters, search, and bulk delete
* **Form Designer** - Live preview of form layouts and amounts
* **Multi-Currency** - USD, EUR, GBP, AUD, CAD, INR, BDT
* **Goal Tracking** - Animated progress bar with configurable goal amount
* **Custom Amounts** - Preset amount buttons plus free-text custom amount input
* **Anonymous Donations** - Optional anonymity checkbox for donors
* **Webhook Handling** - Automatic status updates (completed, failed, refunded)
* **Mobile Responsive** - Looks great on all screen sizes
* **Lightweight** - No jQuery dependency on the frontend
* **GDPR Friendly** - Minimal data collection; no third-party tracking

= Donatico Pro - Turn one-time gifts into recurring support =

The free plugin handles one-time donations beautifully. **Donatico Pro** adds the features that turn casual giving into dependable, recurring income:

* **Recurring Donations** - Let supporters give monthly or yearly through Stripe. Predictable income that renews automatically - the backbone of sustainable fundraising.
* **Campaigns with Goals** - Run fundraising drives with goal tracking and live progress.
* **Donation Tiers** - Offer named giving levels with perks to guide donors toward meaningful gifts.
* **Donor Management** - See lifetime giving, history, and last gift for every supporter, right inside WordPress.
* **Tribute Gifts & Donor Wall** - Accept donations in memory or honor of someone, and showcase supporters publicly.
* **Subscriber Self-Service Portal** - Donors manage their own recurring gifts through a secure, email-verified portal.

Learn more and compare plans at [donatico.forgeo.dev](https://donatico.forgeo.dev).

= Quick Setup =

1. Install and activate the plugin
2. Go to **Donatico -> Settings -> Stripe**
3. Enter your Stripe API keys (test or live)
4. Add the `[donatico_form]` shortcode to any page or post
5. Start accepting donations!

= Shortcodes =

**Donation form:**
`[donatico_form]`
`[donatico_form layout="card" amounts="10,25,100" title="Support Us" button_text="Donate Now"]`

Parameters: `layout` (inline|stacked|card), `amounts` (comma-separated), `title`, `description`, `button_text`, `show_message` (yes|no), `allow_anonymous` (yes|no), `goal` (amount).

**Widgets:**
`[donatico_total_raised]` - Displays total amount raised
`[donatico_donation_count]` - Displays number of completed donations
`[donatico_recent_donors limit="5"]` - Lists recent donors
`[donatico_progress_bar goal="5000"]` - Animated goal progress bar

= Email Notifications =

Donatico sends two types of emails:

* **Admin notification** - Sent to the configured admin email on every completed donation
* **Donor thank-you** - Sent to the donor with a receipt and your customised message

Both support merge tags: `{donor_name}`, `{amount}`, `{date}`, `{site_name}`, and more. Customise everything in **Settings -> Notifications**.

== Installation ==

= From WordPress Dashboard =

1. Go to **Plugins -> Add New**
2. Search for "Donatico"
3. Click **Install Now** then **Activate**
4. Configure under **Donatico -> Settings**

= Manual Installation =

1. Download the plugin zip file
2. Upload and extract to `/wp-content/plugins/donatico/`
3. Activate through the **Plugins** screen
4. Configure under **Donatico -> Settings**

= After Activation =

1. Go to **Donatico -> Settings -> Stripe**
2. Enter your Stripe Test Secret Key and Test Publishable Key
3. Click **Test Connection** to verify
4. Create a page and add `[donatico_form]`
5. When ready for live donations, switch to Live mode and enter your live keys

== Frequently Asked Questions ==

= Do I need a Stripe account? =

Yes. Sign up for free at [stripe.com](https://stripe.com) to get your API keys. You can accept donations in test mode without entering payment details.

= Are there any fees? =

Donatico itself is free. Stripe charges standard processing fees (typically 2.9% + $0.30 per transaction in the US; see [stripe.com/pricing](https://stripe.com/pricing) for your country). Donatico does not add any platform fee of its own.

= Can I accept recurring/monthly donations? =

Yes - recurring donations are available in **Donatico Pro**. Supporters can give monthly or yearly through Stripe, with automatic renewal and a secure self-service portal to manage their subscription. The free version supports one-time donations. See [donatico.forgeo.dev](https://donatico.forgeo.dev) for Pro details.

= What's the difference between the free version and Pro? =

The free version handles one-time donations with forms, goal tracking, multi-currency, donor receipts, and a donation dashboard. **Donatico Pro** adds recurring donations, fundraising campaigns, donation tiers, full donor management, tribute gifts, a public donor wall, and a subscriber self-service portal. Learn more at [donatico.forgeo.dev](https://donatico.forgeo.dev).

= Can I use multiple donation forms on one page? =

Yes. Each `[donatico_form]` shortcode renders an independent form with its own ID. Multiple forms on the same page work without conflict.

= How do I test donations without real money? =

Use Stripe test mode (enabled by default) and test card `4242 4242 4242 4242` with any future expiry date and any CVC. No real charges are made.

= Is it GDPR compliant? =

Yes. The plugin only collects data entered by the donor (name, email, optional message). Payment card details are entered directly on Stripe's hosted page and never touch your server. See our [Privacy Policy](https://stripe.com/privacy) for Stripe's data handling.

= Does it work with WooCommerce? =

Yes. Donatico is a standalone plugin and does not require WooCommerce. It works alongside WooCommerce without conflict.

= Can I customise the thank-you email? =

Yes. Go to **Donatico -> Settings -> Notifications** to customise the subject line, heading, body copy (with merge tags), and footer. You can also send test emails from the same page.

= What currencies are supported? =

USD, EUR, GBP, AUD, CAD, INR, BDT. More currencies can be requested via the support forum.

= Where is donation data stored? =

All donation records are stored in your WordPress database in a custom `wp_donatico_donations` table. No data is sent to external servers other than Stripe for payment processing.

== Screenshots ==

1. Admin dashboard with donation statistics
2. Form Designer with layout selector and live preview
3. Donation form - Card layout (two-column)
4. Donations list with status filters and search
5. Stripe settings with test/live keys and webhook URL
6. Notifications settings with email customisation and test buttons
7. Recurring Donations Pro feature - subscriptions and MRR
8. Campaigns Pro feature - fundraising goals with progress bars
9. Donation Tiers Pro feature - preset amounts with descriptions
10. Donor management Pro feature - lifetime giving and history

== External Services ==

This plugin connects to **Stripe** to process payments.

**What it does:**
Processes credit card donations via Stripe Checkout - a secure, Stripe-hosted payment page.

**When it connects:**
Only when a donor submits the donation form, or when Stripe sends a webhook event to confirm payment status.

**What data is sent to Stripe:**
Donor name, email address, donation amount, currency, and an optional message. Payment card details are entered directly on Stripe's servers and never pass through your website.

**Stripe links:**

* Service: [https://stripe.com](https://stripe.com)
* Terms of Service: [https://stripe.com/terms](https://stripe.com/terms)
* Privacy Policy: [https://stripe.com/privacy](https://stripe.com/privacy)

== Changelog ==

= 1.6.0 =
* Fix: Failed recurring payments now trigger a dunning email to the donor with a secure link to update their card.
* Fix: Dashboard and campaign totals now include recurring renewals going forward.
* Fix: First recurring payment now also creates a donation record so initial charges appear in totals.
* Security: New webhook event dedup table prevents duplicate processing on Stripe retries.

= 1.5.1 =
* Add: Recurring donations feature preview for free users - see what Pro's recurring giving offers.

= 1.5.0 =
* Add: Secure customer portal - subscribers can manage their recurring donations via an emailed magic link ([donatico_customer_portal] shortcode).
* Security: replaced unverified portal access with email-verified, single-use, time-limited token authentication.

= 1.4.0 =
* Added: Subscriptions admin view - see all recurring donations (donor, amount, interval, status, Stripe subscription) with status filters and sorting.
* Added: Monthly Recurring Revenue (MRR) and Active Subscribers cards on the dashboard.

= 1.3.0 =
* Added: Dismissable upgrade notice on Donations admin page
* Added: Contextual upgrade prompt in Form Designer near frequency settings
* Added: Locked Campaigns, Tiers, and Donors submenus with feature teaser pages when Pro is inactive
* Added: SVG mockup previews on each teaser page showing what each feature looks like in Pro
* All Phase 6B prompts gate on Pro presence - none show when Donatico Pro is installed and active

= 1.2.0 =
* Added: In-admin Upgrade to Pro page with three-tier pricing comparison
* Added: Freemius checkout integration for Starter, Business, and Agency plans
* Added: "Get Pro" link on the WordPress Plugins admin page
* All Pro upgrade prompts hide automatically when Donatico Pro is installed and active

= 1.1.1 =
* Fix: Settings menu item now appears below all feature pages (Campaigns, Tiers, Donors) in the Donatico sidebar menu.

= 1.1.0 =
* Add: `donatico_donation_data_before_insert` filter - allow plugins to inject extra column data when a donation row is created.
* Add: `donatico_checkout_session_metadata` filter - allow plugins to inject additional metadata into Stripe Checkout sessions.
* Add: Generic form field forwarding in form.js - inputs marked with `data-donatico-extra="<key>"` are automatically included in donation form submissions, enabling extension by add-on plugins.

= 1.0.0 =
* Initial release
* Stripe Checkout integration with webhook handling
* 3 form layouts: Inline, Stacked, Card
* 5 shortcodes for forms and fundraising widgets
* Admin dashboard with donation statistics
* Donation list with status filters, search, and bulk delete
* Form Designer with live preview
* HTML email notifications for admin and donors with merge tag support
* Customisable email templates via Settings
* Multi-currency support: USD, EUR, GBP, AUD, CAD, INR, BDT
* Anonymous donation option
* Goal tracking with animated progress bar
* Webhook handling: completed, expired, failed, refunded
* Modern OOP architecture with PSR-4 autoloading via Composer

== Upgrade Notice ==

= 1.5.1 =
Adds a preview of recurring donations for free users. Recurring giving, campaigns, tiers, and donor management are available in Donatico Pro.
