Skip to main content

WordPress site (no store)

The Joryio plugin for WordPress, Joryio, works on any WordPress site - you do not need WooCommerce. On a site without a store it tracks page views, sends your Contact Form 7 and Elementor Pro form submissions to Joryio as contacts, and shows your in-app messages (popups) and web push. It is the same plugin a WooCommerce store uses; the store features turn on only when WooCommerce is active (see WooCommerce Integration).

Install the plugin​

  1. In Joryio, go to Settings → Integrations and open WooCommerce & WordPress
  2. Click Download Plugin. The download is always the latest version of the plugin
  3. In WordPress admin, go to Plugins → Add New → Upload Plugin, upload the zip file and click Install Now
  4. Click Activate

To update later, download the plugin again from the same page and upload it the same way; WordPress offers to replace the installed version and keeps your settings and connection.

Connect​

  1. On the same Joryio page, copy the Server URL and click Generate API key to get your API key (it starts with jry_wc_ - the same kind of key a store uses)
  2. In WordPress admin, go to Settings → Joryio (on a site without WooCommerce the plugin is under Settings, not under WooCommerce)
  3. Paste the API key, check that Server URL is your region's API address (for example https://api-eu1.joryio.com), and click Connect

The settings page then shows Connected to Joryio with your site name, the site URL and your Workspace ID. In Joryio, Settings → Integrations shows the connection as a WordPress site, with what it sends to Joryio - there are no store statistics or sync buttons, because there is no store to sync.

From plugin 1.6.32 the settings page has four tabs: Connection, Tracking & identity, In-app & web push and Forms (until the site is connected, only Connection). Each tab saves only its own settings, and the page says Settings saved. after a save.

Everywhere else in Joryio the site is a WordPress site, not a store: Settings → Apps and the app pickers of in-app and push messages show its app as WordPress, it is not counted among your connected stores, it is not offered as a store for coupon programs, and the store checks (sync, scheduled reconciliation and their alerts) skip it.

What works without a store​

FeatureWhat it doesWhere to set it
Page trackingThe tracking script records every page visit as Page Viewed, and links the visitor to a contact when they give an email (a form, logging in, registering)Settings → Joryio → Tracking & identity → Inject Tracking Script (on by default)
Website formsContact Form 7 and Elementor Pro submissions create or update the contact and record Form Submitted (see Website forms)Settings → Joryio → Forms, or the form's Actions After Submit in Elementor
In-app messagesShows your Joryio in-app messages (popups), including HTML messagesSettings → Joryio → In-app & web push (on by default)
Web pushLets visitors subscribe to browser notifications, through a push opt-in in-app messageSettings → Joryio → In-app & web push → Web push (off by default)

In-app messages and web push work as on a store - the settings, the service worker and the site-root requirement for web push are described in In-app messages and web push.

Website forms​

Only the fields you map leave your site. A submission is sent when it has a valid email or phone; one with neither is not sent.

Contact Form 7​

  1. Go to Settings → Joryio. The Forms tab lists every Contact Form 7 form
  2. Tick Send this form to Joryio
  3. Choose a List (optional - without one the form only saves the contact and the event)
  4. Choose the List subscription mode and, for the consent mode, the form's acceptance field
  5. Map each field to Email, Phone, First name, Last name, Custom attribute (type the attribute key: lower case letters, digits and underscores) or Do not send. Map at least an email or a phone field
  6. Click Save form settings. Only an administrator can change the form settings

Elementor Pro​

  1. Edit the form in Elementor and add Joryio under Actions After Submit
  2. In the Joryio section, choose the List and the List subscription mode. For the consent mode, enter the Consent field ID - the ID of the form's Acceptance field, from the field's Advanced tab
  3. Enter the field IDs for Email, Phone, First name and Last name, and any custom attributes one per line as attribute_key = field_id
  4. Click Update

Every submission creates or updates the contact and records the Form Submitted event. Only the list subscription depends on the form's mode:

ModeList subscription
This is a signup form - always subscribeEvery submission
Only when a consent field is ticked (the default)Only when the form's consent field - a Contact Form 7 acceptance field or an Elementor Acceptance field - is ticked

The event's consentGiven property says whether consent was given. An unticked box never unsubscribes anyone. When the list requires double opt-in, Joryio sends the confirmation email first and subscribes the contact when they confirm; until then the event names the list in listsPending.

What Joryio records​

  • The contact - a visitor's form fills in the email and phone only when the contact has none: it never changes the email or phone of an existing contact. A signed-in customer can update their phone (plugin 1.6.34): when a customer logged in to your site submits a form and the form's email belongs to their own contact, the phone typed into the form replaces the contact's phone. The plugin proves who is logged in with a signed proof made on your server, only for a form submitted on your own site; the email is never changed this way. A Contact Form 7 form that posts through the WordPress REST API without the REST nonce reaches WordPress as logged out, so it follows the visitor rule. The names and custom attributes you mapped are written to the contact. A contact created by a form shows Created via: Website form
  • The event - Form Submitted, with source (cf7 or elementor), formId, formName, pageUrl, consentGiven, consentText (the wording of the ticked consent box, from plugin 1.6.31), listsSubscribed, listsPending, the form's own email and phone (formatted the way the contact stores them, so a different phone a visitor typed is not lost) and phoneUpdated when the form's phone differed from the contact's - true when the contact now has it, false when the contact kept its own. Team members who cannot see personal data do not see the email and phone values, and they are erased with the person. Use it to start a journey, trigger a campaign or build a segment. The other submitted values are not on the event
  • The consent record - when the form subscribes the contact to a list, the subscription history keeps the proof of consent: the exact wording of the consent box the person ticked, the page the form was submitted on (pageUrl), the time and the visitor's IP address (shown only to team members who can see personal data). See Consent proof

From plugin 1.6.31, when the person ticks the form's consent field the plugin also sends what they agreed to:

  • The wording - the visible text of the consent field: a Contact Form 7 acceptance tag's text ([acceptance your-consent] I agree to receive news by email [/acceptance]), or an Elementor Acceptance field's Acceptance Text (else its label). Links and formatting are removed; at most 500 characters. Text you write outside the acceptance tag in the Contact Form 7 template is not sent - put the wording inside the tag. For Elementor, the field is the one named in Consent field ID (any custom ID) and must be an Acceptance field
  • The page, the time and the IP address of the visitor's submission

A box left unticked never sends its wording, and a signup form (no box) sends none. The proof is written to a consent entry only when the form subscribes the contact to a list: with No list nothing is subscribed, so the wording stays on the Form Submitted event only (consentText; the IP address is never put on the event). For a double opt-in list the proof is kept with the confirmation and recorded when the person confirms.

Submissions never slow the visitor down: WordPress queues them and sends them in the background with WP-Cron, and retries when Joryio cannot be reached. A retry is never counted twice. WP-Cron runs on site visits, so on a site with very little traffic, or with WP-Cron turned off, run it from a server cron job.

The full reference for forms is the same on a store: Forms: Elementor and Contact Form 7.

Recognising the visitor. An email typed into a form on the site also identifies the visitor's browser when Recognise visitors by the email they type is on (the default). The submission itself always goes to the contact with that email.

What needs WooCommerce​

These features need WooCommerce on the site:

  • Product, order and customer sync, and the store's numbers in the dashboard
  • Product, category, add-to-cart and checkout tracking
  • Abandoned cart tracking and cart recovery links
  • Coupon apply links
  • The marketing consent checkbox on the checkout and registration form

Adding WooCommerce later​

If you install WooCommerce on a site that is already connected, WordPress shows a notice asking you to reconnect. Go to WooCommerce → Joryio, click Disconnect, then paste your API key and click Connect again: on connect the plugin creates the WooCommerce REST key Joryio needs, and Joryio starts syncing your store. Your forms settings are kept. From then on the site is a store - see WooCommerce Integration.

Joryio also notices on its own: the first order, cart, product or customer the plugin sends once WooCommerce is active turns the site into a store in Joryio (its app shows as WooCommerce again and it counts as a store), even before you reconnect. Until you reconnect, those live updates arrive but the full store sync waits for the REST key - so reconnect as above. Removing WooCommerce later does not turn the store back into a site automatically.