Skip to content

Powered by Grav CMS + Helios Theme

Settings reference

Every key the add-on reads, in user/config/plugins/kahunacart-affiliates.yaml, with its default. Each has a field on KahunaCart → Affiliates → Settings, on seven tabs: Program, Tracking, Commissions, Payouts, PayPal, Tax and Notifications. Amounts are in the smallest unit of the currency, so 5000 is 50.00.

The PayPal client secrets are encrypted when the form is saved, and no screen shows them again.

The master switch

Key Default Field What it does
enabled true Plugin status Off, and the admin section and the migrations stand still. Partners, commissions and tax records stay in the database, and reset, export, erasure and merge still look after them.

Program

Key Default Field What it does
program.open false Open Applications Anyone can apply, from their account or from the public form. Off, and only partners you add yourself can earn.
program.public_apply true Apply Without an Account People without an account apply from the public form at /affiliate/apply and confirm their email. Their account is made when you approve them. Off, and the program block's Apply button asks people to sign in first. Needs customer accounts in the store database (account.db_identity). See Without an account.
program.auto_approve false Approve Automatically Approve every application as it comes in. Off, and you look at each one first.
program.reject_reasons four reasons Quick Reasons for Rejecting The sentences the reject dialog offers under its message box. Clicking one puts it into the message, where you can still change it. Add, edit, remove and drag to reorder them. An empty list offers none, only the box. The four it starts with: "We couldn't find the site or channel you mentioned.", "Coupon and deal sites aren't part of the program.", "Your audience isn't a close fit for the store right now." and "We need a little more detail on how you'd share your link." See Review applications.
program.terms_page empty Terms Page The route of the page applicants agree to, for example /affiliate-terms. Empty means no terms and no tick.
program.blocked_codes empty Blocked Words in Codes Words partners may not use in a code they ask for, such as your brand or a competitor's. A word blocks any code that contains it, so official also blocks theo-official. Checked on applications and on requests for a new code, and again when you approve a request, so a word you block later still counts. A code made from an applicant's name leaves these words out, so Approve Automatically never hands out a code with your brand in it. Never applied to a code you type yourself. See Choosing a code.
program.customer_group empty Customer Group The code of the customer group every customer with an active or paused partner is put in. Partners who leave are taken out, even if you added them yourself, so use a group just for partners. Customers who have never been partners are never touched. Empty puts nobody in a group, and saving a different group moves partner customers to it. See Partners in a customer group.

Tracking and credit

Key Default Field What it does
tracking.param ref Link Parameter The word in the link that carries a partner's code, as in ?ref=andy. Only letters, digits, _ and - are kept. Changing it breaks links already shared.
tracking.window_days 30 Remember a Click For (days) How long a click still counts when the visitor buys later. At least 1.
tracking.model last Which Click Wins last gives the credit to the last partner clicked. first keeps it with the first.
tracking.coupon_priority true Coupon Beats Click When a click and a coupon name different partners, the coupon's partner gets the credit.
tracking.consent_mode session Cookie Consent session remembers a visitor who hasn't agreed to marketing cookies for that visit only. strict remembers nothing without consent. Any other value is treated as strict. See Cookie consent.
fraud.allow_self_referral false Credit a Partner's Own Orders Off, and an order placed by the partner or with their email address earns no commission.

Commissions

Key Default Field What it does
commission.type percent Commission Type percent of the order, or flat for each order. Product, category and partner rates override this.
commission.value 20 Default Rate A percentage such as 20. For flat, whole minor units of the order's currency, where 500 is 5.00.
commission.include_shipping false Pay on Shipping Off, and the commission is worked out on goods after discounts, before tax and shipping.
commission.exclude_gift_cards true Nothing on Gift Cards Buying a gift card earns no commission. The sale that spends it already did.
commission.hold_days 30 Hold For (days) How long a commission waits before it can be approved. 0 means no wait.
commission.require_approval false Approve Each Commission After the holding period a commission waits for you instead of approving itself.
recurring.mode all Earn on Renewals off, all, or limited. See Renewals.
recurring.limit 0 Renewals That Earn With limited, how many renewals pay. 0 means none.
recurring.rate empty Renewal Rate A percent for renewals. Empty pays the same rate as the first sale.

Payouts

Key Default Field What it does
payouts.methods store_credit, manual, paypal Payout Methods What partners can choose from. Unknown names are dropped, and an empty list becomes manual.
payouts.minimum 5000 Minimum Payout A partner owed less than this waits for a later batch.
payouts.store_credit_bonus 0 Store Credit Bonus (%) Extra percent added when a partner takes store credit. 10 turns 50.00 into 55.00.

PayPal

Key Default Field What it does
paypal.use_driver_credentials true Use the PayPal Payment Keys Borrow the KahunaCart PayPal plugin's keys when it's installed, enabled and set to the same mode.
paypal.mode sandbox Mode sandbox sends pretend payouts. live sends real money.
paypal.sandbox_client_id empty Sandbox Client ID From a sandbox app in the PayPal developer dashboard.
paypal.sandbox_client_secret empty Sandbox Client Secret The secret for that app. Stored encrypted.
paypal.live_client_id empty Live Client ID From a live app.
paypal.live_client_secret empty Live Client Secret The secret for that app. Stored encrypted.
paypal.email_subject empty Email Subject The subject of the email PayPal sends a partner. {store} becomes your store's name. Empty is "You have a payout from {store}".
paypal.note empty Payout Message The message on each payout. {store} works here too. Empty is a thank-you naming your store.
paypal_connection none PayPal connection Not a setting. A panel that shows whether the keys can send payouts, with a Check now button. It saves nothing.

Tax

Key Default Field What it does
tax.collect true Collect Tax Details Partners can fill in a tax form. KahunaCart keeps the details and adds up what each partner was paid. It never files anything.
tax.require_before_payout us_only Require Before Paying off, us_only or all: which partners need a form on file before they go in a batch.
tax.nec_threshold empty 1099-NEC Threshold In cents. Empty uses 600.00 for payments up to 2025 and 2,000.00 from 2026. A number replaces that for every year.
tax.retention_years 7 Keep Records For (years) After a partner's last payout, their tax records can't be erased for this long.
tax.documents_path empty Signed Forms Folder An absolute folder for signed tax forms. Empty is user/data/kahunacart/affiliates-tax.
tax_key_status none Tax ID key Not a setting. A panel that shows whether KAHUNACART_TAX_KEY is set and can generate a key. It saves nothing. See Tax details.

Notifications

Key Default Field What it does
notifications.new_commission false Email on Each Commission Emails the partner every time they earn a commission. Off, because a busy program would fill their inbox. This is only the partner's email. Your own messages are on the Notifications screen under Store owner.
notifications.statements false Monthly Statements Email a monthly statement to partners with no account to look at.
notifications.reply_to empty Reply-To Address Where a partner's reply to an affiliate email goes, such as [email protected]. It covers every email to partners and the confirmation email for a public application, and no other email the store sends. Empty, or a value that isn't an email address, uses the Email plugin's reply_to if the site has one, and otherwise replies go to the From address.

Rate limit for the code check

The live check on every code field, as a partner types, asks a small public address whether the code is free. It's limited in KahunaCart's rate limiter with its own bucket, affiliate_code_check, so a script can't hammer it. The default is 30 checks a minute for each visitor. Over that, the hint stops and the form still checks the code when it's sent.

To change it, set security.rate_limits.affiliate_code_check in KahunaCart's settings, for example { limit: 60, window: 60 }. It isn't a key in kahunacart-affiliates.yaml, so it has no field on the Affiliates settings screen. The limit for the application form, affiliate_apply, is described under Without an account.