Skip to content

Settings reference ​

This is the complete field-by-field reference for Ambikly → Settings. Every field is listed with the key it is stored under, its default, and what actually reads it.

Some parts of this screen are built but not yet connected to anything. Those are called out in a Not yet wired up subsection on each tab rather than left for you to discover. If a field is in that subsection, changing it will still show "Settings saved successfully" — the value is written to the database, but nothing reads it.

How the screen works ​

The Settings screen is a single-page app with its own sidebar. Nine entries appear in that sidebar:

Sidebar entrySettings groupEditor
Store SettingsstoreThis screen
Payment SettingspaymentsThe Payments panel, with its own save button
Invoice & PackinginvoiceThis screen
Tax & DutiestaxThis screen, plus the Tax rates table
Email Configuration—Pointer to Ambikly → Emails
Roles and PermissionsrolesThis screen
Storage SettingsstorageThis screen
Shipping—The Shipping zones panel (database tables, not options)
Features & AddonadvancedThis screen

One Save button, every group ​

There is a single Save Changes button fixed to the bottom of the screen. It does not save "the tab you are on" — it posts every settings group in one request, regardless of which tab is open:

general, store, products, shipping, tax, account, advanced, invoice, roles, storage

Two consequences worth knowing:

  • A change you made on the Tax tab is saved even if you have since clicked over to Storage. You do not need to save once per tab.
  • The Payment tab hides the Save Changes button entirely and shows a note in its place. Payment gateways save from each gateway's own Save Gateway button, because this screen's save does not know about gateway state at all.

Where settings live ​

Each group is one WordPress option, named ambikly_settings_ plus the group name:

ambikly_settings_general
ambikly_settings_store
ambikly_settings_products
ambikly_settings_payments
ambikly_settings_shipping
ambikly_settings_tax
ambikly_settings_account
ambikly_settings_advanced
ambikly_settings_invoice
ambikly_settings_roles
ambikly_settings_storage
ambikly_settings_pages
ambikly_settings_emails

Saving a group replaces the option rather than merging into it, so the group you post is the group that is stored.

Four groups have no editor on this screen at all. They are still loaded and re-saved by the Save button, so their values survive, but there is no field for them:

GroupStatus
generalWritten once by the setup wizard. Currency, currency position, store country, weight unit, dimension unit. Read only as a fallback when the store group is empty.
productsDefined server-side (products per page, related/upsell/cross-sell counts, gallery and zoom flags) with no UI on this screen.
accountDefined server-side (registration, email verification, GDPR, data retention) with no UI on this screen.
shippingSuperseded by real shipping zones. The four legacy fields are not read by anything.

ambikly_settings_pages holds the five store page slugs and is written by the activation seeder, not by this screen. ambikly_settings_emails holds sender defaults and is managed from Ambikly → Emails.

REST routes ​

The screen talks to four routes. All four require the manage_options capability — a Store Manager or Support Agent cannot read or write settings.

MethodRoutePermissionNotes
GET/ambikly/v1/settingsmanage_optionsReturns all twelve groups, merged over their defaults.
POST/ambikly/v1/settingsmanage_optionsSaves every group in the body. Validates all groups before writing any.
GET/ambikly/v1/settings/{group}manage_optionsOne group.
POST/ambikly/v1/settings/{group}manage_optionsSaves one group.

Validation and sanitization ​

A few behaviors are worth knowing before you fill anything in.

  • Whole-request validation. The bulk save validates every group up front. If one value is rejected, nothing is written and you get an error — you will never see "Settings saved successfully" for a request that only half applied.
  • Store Name. Blanking a Store Name that was already set is rejected with "Store name is required." A Store Name that was already empty does not block saving, so an unrelated tab's change still goes through.
  • Email fields. storeEmail and fromEmail are rejected with "x" is not a valid email address. rather than silently coerced to empty.
  • Postcodes stay text. storePostcode and companyPostcode are sanitized as text, so a leading zero survives. 02139 stays 02139.
  • Rich text fields. customCSS, customJS, accountDetails and emailFooter are run through wp_kses_post. Everything else that is a string is run through sanitize_text_field.
  • Numbers are coerced. Any other value that looks numeric is stored as an integer or float.
  • Secrets are masked. Three fields are masked in every GET response and never overwritten with their own mask on save: s3SecretKey, stripe.secretKey and paypal.clientSecret. The mask keeps the last four characters and replaces the rest with bullets. If you save the form without touching a masked field, the real stored value is restored instead of being clobbered.

Store Settings ​

Ambikly → Settings → Store Settings · group store

The largest tab, and the one with the most fields that genuinely matter.

Store Information ​

SettingKeyDefaultWhat it does
Store NamestoreName(empty)Your store's name. Appears on invoices and packing slips. Falls back to the setup wizard value, then the site title. Marked required.
Store TaglinestoreTagline(empty)Short slogan.
Store DescriptionstoreDescription(empty)A paragraph about the store.
Store LogostoreLogo(empty)A logo URL, typed into the text field.
Store IconstoreIcon(empty)A favicon URL, typed into the text field.

Not yet wired up ​

  • The Upload buttons next to Store Logo and Store Icon do nothing. They have no click handler and do not open the media library. Paste a URL into the text field instead — the URL is what gets stored.
  • Store Tagline and Store Description are stored but nothing reads them. They do not appear anywhere on the storefront, in emails, or on documents.

Store Address ​

SettingKeyDefaultWhat it does
Street AddressstoreAddress(empty)First address line on invoices and packing slips.
Address Line 2storeAddressLine2(empty)Second address line on those documents.
CitystoreCity(empty)Combined with state and postcode into the document address block.
State / ProvincestoreState(empty)Same.
Postal / ZIP CodestorePostcode(empty)Same. Stored as text, so leading zeros survive.
CountrystoreCountryUSThe store's country. Used as the default country in the checkout address form and by tax and shipping resolution.
CurrencycurrencyUSDStore currency for prices, cart and orders. Used everywhere money is formatted.
Currency PositioncurrencyPositionleftleft renders $99.00, right renders 99.00$.
Tip: Currency, currency position and store country are read from this tab first, with the setup wizard's one-time values as a fallback. This tab is the only place they are editable after setup.

Contact Information ​

SettingKeyDefaultWhat it does
Store EmailstoreEmail(empty)Store contact address. Used on invoices and packing slips. Validated as an email address.
Store PhonestorePhone(empty)Contact phone number.
Fax NumberstoreFax(empty)Fax number.

Not yet wired up ​

Store Phone and Fax Number are stored but nothing reads them.

Social Media ​

SettingKeyDefault
Facebook URLfacebookUrl(empty)
Twitter URLtwitterUrl(empty)
Instagram URLinstagramUrl(empty)
LinkedIn URLlinkedinUrl(empty)
YouTube URLyoutubeUrl(empty)

Not yet wired up ​

All five social URLs are stored but nothing reads them. They do not render in the storefront or in emails. If you want social links in your footer, add them through your theme.

Company Information ​

SettingKeyDefault
Company NamecompanyName(empty)
Company AddresscompanyAddress(empty)
CitycompanyCity(empty)
State / ProvincecompanyState(empty)
Postal CodecompanyPostcode(empty)
CountrycompanyCountryUS
Tax ID / VAT NumbercompanyTaxId(empty)

Not yet wired up ​

The help text says these appear on invoices and packing slips. They do not — documents read the Store Information and Store Address fields above instead. Put your legal entity details in the Store Name and Store Address fields if you need them on documents, or use the Invoice Footer.

Business Hours ​

SettingKeyDefault
Business HoursbusinessHours(empty)
TimezonetimezoneAmerica/New_York

Not yet wired up ​

Neither field is read. Order timestamps follow WordPress's own timezone setting under Settings → General, not this one.

Store Policies ​

SettingKeyDefault
Terms & Conditions PagetermsPage(empty)
Privacy Policy PageprivacyPage(empty)
Refund Policy PagerefundPolicyPage(empty)
Shipping Policy PageshippingPolicyPage(empty)

Not yet wired up ​

These are the most misleading fields on the screen, so read this before you spend time on them.

  • The dropdowns do not list your pages. Each one has a single hard-coded option — "Terms & Conditions", "Privacy Policy", "Refund Policy", "Shipping Policy" — next to "Select a page...". There is no page picker.
  • Nothing reads the saved value. The help text says the links appear in the footer and at checkout. They do not appear anywhere.

Link your policy pages from your theme's footer menu instead.

Checkout Options ​

SettingKeyDefaultWhat it does
Enable Guest CheckoutenableGuestCheckoutOnWorks. When off, checkout rejects an order from a logged-out visitor, and the checkout bootstrap reports guest checkout as unavailable.
Enable Account CreationenableAccountCreationOnIntended to allow account creation during checkout.

Not yet wired up ​

Enable Account Creation is stored but nothing reads it.

Product Features ​

SettingKeyDefaultWhat it does
Enable Product ReviewsenableReviewsOnWorks. When off, the Reviews section is removed from the product detail page and the review submission route rejects new reviews.
Enable WishlistenableWishlistOffIntended to enable a wishlist.
Enable Product ComparisonenableCompareOffIntended to enable product comparison.
Catalog ModecatalogModeOffIntended to hide prices and disable purchasing.
Enable CouponsenableCouponsOnWorks. When off, coupon validation refuses every code and the cart reports coupons as unavailable.

Not yet wired up ​

  • Enable Wishlist and Enable Product Comparison are stored but nothing reads them. Wishlist and compare are Pro add-ons with their own settings — see Wishlist and Product Compare. Turning these toggles on does not enable anything.
  • Catalog Mode is stored but nothing reads it. Prices are still shown and products can still be purchased. To run a catalog-only store today, remove the Cart and Checkout pages from your navigation.

Inventory Management ​

SettingKeyDefaultWhat it does
Enable Stock ManagementenableStockManagementOnReveals the four fields below in the UI.
Low Stock ThresholdlowStockThreshold5Works. The store-wide fallback threshold for low-stock alert emails, used when a product has no threshold of its own.
Out of Stock ThresholdoutOfStockThreshold0Intended to mark a product out of stock at or below this number.
Hold Stock (Minutes)holdStockMinutes60Intended to release held stock on unpaid orders.
Enable BackordersenableBackordersOffIntended to allow purchasing out-of-stock products.

Not yet wired up ​

Enable Stock Management, Out of Stock Threshold, Hold Stock (Minutes) and Enable Backorders are stored but nothing reads them. Stock behavior is driven per product — see Inventory & stock. Only Low Stock Threshold has a reader.


Payment Settings ​

Ambikly → Settings → Payment Settings · group payments

This tab is the Payments panel, and it is the only working payment gateway editor. It reads and writes ambikly_settings_payments through the payments REST routes, which is what the gateway classes read at checkout.

Every registered gateway appears as a card. Ambikly ships seven: stripe, paypal, cod, bank_transfer, cheque, manual and net_terms. A gateway added by a plugin through the ambikly_payment_gateways filter appears here too.

Per-gateway fields ​

FieldStored asWhat it does
Enabled toggleenabledWhether the gateway is offered at checkout.
Title shown at checkouttitleThe customer-facing name.
DescriptiondescriptionOne line under the title at checkout.
InstructionsinstructionsShown on the thank-you page and in the order email. Use it for bank details or payment reference notes.

Credentials ​

Only two gateways take API credentials.

GatewayFieldsStored under
StripePublishable key, Secret keycredentials.publishable_key, credentials.secret_key
PayPalClient ID, Client secretcredentials.client_id, credentials.client_secret

Secret fields render as password inputs and are masked in API responses. Bank transfer, cash on delivery, cheque, manual and net terms take no credentials.

Saving ​

Each gateway card has its own Save Gateway button inside its Configure panel. Changes take effect only after that button. The page-level Save Changes button is hidden on this tab precisely because it would report success without saving gateway state.

Defaults seeded on activation: Cash on Delivery enabled, Direct Bank Transfer present but disabled.

Not yet wired up ​

  • PayPal has no sandbox/live switch in the admin UI. The gateway's mode setting defaults to sandbox and there is no field for it. Until the option is set directly in the database, PayPal runs against the sandbox. See PayPal.
  • Stripe has no manual-capture field. capture_manual exists in the gateway but has no UI, so capture is always automatic. See Stripe.

Invoice & Packing ​

Ambikly → Settings → Invoice & Packing · group invoice

Every field on this tab is read by the invoice and packing slip services. Nothing here is inert.

Invoice Settings ​

SettingKeyDefaultWhat it does
Enable InvoicesenableInvoicesOnWhen off, invoices are not generated. Hides the fields below in the UI.
Invoice PrefixinvoicePrefixINV-Prepended to the invoice number. INV-1042.
Starting Invoice NumberinvoiceNumber1The number the sequence starts from. Floored at 1.
Invoice FooterinvoiceFooter(empty)Text at the bottom of every invoice. Payment terms, thank-you note, legal line.

Packing Slip Settings ​

SettingKeyDefaultWhat it does
Enable Packing SlipsenablePackingSlipsOnWhen off, packing slips are not generated. Hides the fields below in the UI.
Packing Slip PrefixpackingSlipPrefixPS-Prepended to the packing slip number.
Packing Slip FooterpackingSlipFooter(empty)Text at the bottom of every packing slip.
Tip: The invoice footer is one of the few rich-text fields on this screen — it is sanitized with wp_kses_post, so basic HTML survives.

See Invoices & packing slips for how documents are generated and who can view them.


Tax & Duties ​

Ambikly → Settings → Tax & Duties · group tax, plus the tax rates table

Tax Configuration ​

SettingKeyDefaultWhat it does
Enable TaxesenableTaxesOnWorks. The master switch. When off, no tax is calculated at checkout. Hides the fields below in the UI.
Prices Include TaxpricesIncludeTaxOffWorks. When on, product prices are treated as tax-inclusive and tax is calculated backwards out of the price.
Calculate Tax Based OncalculateTaxBasedOnbillingWorks for two of its three options. billing uses the customer's billing address, shipping uses the shipping address.
Default Tax ClassdefaultTaxClassstandardIntended as the fallback class for products without one. Options: Standard, Reduced, Zero.
Display Tax in CartdisplayTaxInCartOnIntended to show the tax line in the cart.
Display Tax in CheckoutdisplayTaxInCheckoutOnIntended to show the tax line at checkout.

Not yet wired up ​

  • "Store Address" is a third option in the Calculate Tax Based On dropdown with no backend branch. Tax is calculated by shipping or billing address only. Selecting Store Address saves the value but falls through to the normal address-based path.
  • Default Tax Class, Display Tax in Cart and Display Tax in Checkout are stored but nothing reads them. The tax line renders based on whether tax was actually calculated.

Tax rates ​

Below the configuration block sits the tax rates table. This is a real editor writing to the tax rates table in the database, not an option.

ColumnWhat it does
NameLabel for the rate, shown in totals.
Rate %The percentage. Accepts three decimal places.
CountryTwo-letter country code, or * for any.
StateState or province code, or * for any.
PostcodePostcode, or * for any.
ClassStandard, Reduced or Zero.
PriorityLower numbers are evaluated first.
CompoundWhether this rate stacks on top of other rates.
ShippingWhether this rate also applies to the shipping cost.

Rows save on blur — click out of a field and it is written. Checkboxes save immediately. A new row starts from Standard, 0, *, *, *, standard class, priority 1, shipping on.

Not yet wired up ​

  • Postcode ranges and comma-separated lists do not work. The help text under the table says postcodes support comma-separated values and ranges like SW1A...SW1Z. Rate matching is a plain equality check plus the * wildcard. Only an exact postcode or * will match. Create one row per postcode if you need postcode-level rates.
  • The city column exists in the data model but has no column in this table. It defaults to * on new rows and is not editable from the admin.

See Tax for worked examples.


Email Configuration ​

Ambikly → Settings → Email Configuration

This entry expands into two sub-items, Notifications and Email Templates. Both land on the same panel, which is a pointer rather than a form.

Email sender details and per-email enable toggles used to live here under a settings group nothing read — filling them in reported success with no effect on outgoing mail. That form is gone. The real configuration is at Ambikly → Emails, where the sender details sit alongside the message content they are used with.

Careful: Only four transactional emails are editable in the free core: order notification to the customer and to the admin, and order status change to the customer and to the admin. There are no shipping-notification, cancelled-order or refund-notification emails. Low-stock alerts and company buyer invitations are hard-coded and not editable.

See Emails.


Roles and Permissions ​

Ambikly → Settings → Roles and Permissions · group roles

This entire tab is inert

Every field on this tab is stored and nothing reads any of them. The tab is built but not connected. Changing anything here has no effect on who can do what.

SettingKeyDefaultIntended behavior
Default Customer RoledefaultCustomerRolecustomerThe role assigned to newly registered customers. Options: Customer, Subscriber, Wholesale Customer.
Enable Role-Based PricingenableRoleBasedPricingOffDifferent prices per user role.
Enable Role-Based AccessenableRoleBasedAccessOffRestrict products or categories by role.

The group also defines customerRole (customer) and allowCustomerRoleChange (off) server-side, with no field on the screen at all.

What actually controls permissions ​

Ambikly's real roles and capabilities are created at activation and are not configured from this tab:

  • Two custom roles: Store Manager (ambikly_store_manager) and Support Agent (ambikly_support_agent).
  • Two capabilities: ambikly_manage_store and ambikly_view_store.
  • Settings, Payments, Webhooks, System Status, Import/Export, Email Templates and Setup remain manage_options only.

For role-based pricing, use the Dynamic Pricing add-on, which has a working role-based rule type. See Roles & permissions for the real model.


Storage Settings ​

Ambikly → Settings → Storage Settings · group storage

This entire tab is inert

Nothing reads ambikly_settings_storage. Uploads always go to the WordPress media library on local disk. S3 and CDN offloading are not implemented. Entering AWS credentials here configures nothing.

SettingKeyDefaultIntended behavior
Storage TypestorageTypelocalWhere uploaded files are stored. Options: Local Storage, Amazon S3, CDN.
S3 Bucket Names3Bucket(empty)Target bucket. Shown only when Storage Type is S3.
S3 Regions3Region(empty)AWS region.
Access Key IDs3AccessKey(empty)AWS access key.
Secret Access Keys3SecretKey(empty)AWS secret. Masked in API responses.
Enable CDNenableCdnOffServe media through a CDN. Shown only when Storage Type is CDN.
CDN URLcdnUrl(empty)CDN base URL.
Max Upload Size (MB)maxUploadSize10Maximum upload size.
Allowed File TypesallowedFileTypesjpg,jpeg,png,gif,pdf,zipComma-separated extension allow-list.
Careful: Because nothing reads Max Upload Size or Allowed File Types either, they provide no protection. Real upload limits come from PHP and WordPress. If you need S3 offloading or a CDN today, use a dedicated offload plugin.

The Secret Access Key is the one field here that behaves carefully: it is masked in every GET response, and saving the form without touching it restores the real stored value instead of writing the mask.


Shipping ​

Ambikly → Settings → Shipping

This tab is the shipping zones panel. It is a real editor writing to the shipping zones and methods tables, not to an option. The four legacy fields that used to live here — Enable Shipping, Shipping Calculation Method, Default Shipping Zone, Free Shipping Threshold — were removed because nothing ever read them.

Zones ​

A zone is a name plus a list of regions. Each region is a country code and an optional state; * means "any".

ActionWhat happens
Add zoneCreates a zone covering * / *. Rename it and edit its regions.
EditRename the zone and add or remove regions. Country codes are upper-cased; an empty state becomes *.
DeleteRemoves the zone and all of its methods. Orders in progress are unaffected.

Activation seeds one zone, Rest of World, covering every country.

Methods ​

Each zone holds a list of shipping methods. Three types are available.

Methodmethod_idDefault cost when addedNotes
Flat rateflat_rate10A fixed cost for the zone.
Free shippingfree_shipping0Created with a min_amount of 0.
Local pickuplocal_pickup10No extra settings.

Editable columns are Title, Cost and Enabled, plus Remove. Changes save as you edit.

The seeded Rest of World zone ships with two methods: Flat rate at 10, and Free shipping (over 100) with a minimum amount of 100.

Not yet wired up ​

Per-item cost has no admin field. Flat rate methods are created with a per_item value of 0 and there is no column for it, so a flat rate is a flat rate. Only Title, Cost and Enabled can be edited.

Shipping classes on products are also cosmetic — the list is hard-coded and the shipping service never reads it. See Shipping.


Features & Addon ​

Ambikly → Settings → Features & Addon · group advanced

All three toggles are inert

Nothing reads these values. The tab is present for future use.

SettingKeyDefaultIntended behavior
Enable Debug ModeenableDebugModeOffShow detailed error and debug information.
Enable LoggingenableLoggingOffLog system events and errors.
Enable CachingcacheEnabledOnCache pages and data.

An "Enable REST API" toggle used to sit here. It was removed rather than left in place: every controller registers its routes unconditionally, so switching it off did nothing while implying a security control that never existed. You cannot disable the REST API from settings.

The group also defines debugMode, enableRestAPI, enableWebhooks, customCSS and customJS server-side with no fields on the screen. There is no working Custom CSS or Custom JS field — add CSS through your theme, as described in Themes & template overrides.

For real diagnostics, use System status and Troubleshooting.


Settings that are managed elsewhere ​

Several things people look for on this screen are configured somewhere else entirely.

What you wantWhere it is
Email sender name and address, per-email toggles, message contentAmbikly → Emails — see Emails
Product categories, tags and brandsAmbikly → Categories — see Categories, tags & brands
CouponsAmbikly → Coupons — see Coupons
WebhooksSee Webhooks
Import and exportSee Import & export (CSV)
The Pro licenseAmbikly → Settings → License — see Install & activate a license
Store page assignmentThe ambikly_settings_pages option, seeded at activation — see Store pages
Data removal on uninstallThe ambikly_remove_data_on_uninstall option. It defaults to false and has no admin UI. Deactivation leaves everything intact.
PROAdd-ons bring their own settings

Pro add-ons do not add tabs to this screen. Each one has its own settings panel on the Add-ons screen, rendered from the schema the add-on declares.

See pricing →

Where to go next ​