Import
The plugin keeps its own copy of your published Arlo data and shows it through your pages. An import, also called a synchronization, refreshes that copy from your Arlo platform. Imports run on a schedule, and you can run one yourself.
Contents
- Why the plugin imports data
- How an import works
- The callback
- Running in the background
- Running an import manually
- Scheduled imports
- Setting up a cron job
- Logs
- Fixing blocked callbacks
- Troubleshooting
- Importing to a local development site
Why the plugin imports data
The plugin stores a copy of your published Arlo data, such as events, venues, presenters and categories, in its own database tables, which start with arlo_. They sit in your WordPress database next to your other site data. Your pages and shortcodes are built from this copy. Showing a page does not make a call to Arlo, so it is fast and does not depend on Arlo being reachable.
- While an import runs, your live pages are not affected. New data is downloaded and stored separately, and it is published all at once as soon as the import completes.
- If an import fails, or the plugin cannot reach Arlo, your pages carry on showing the last copy that was downloaded.
An import is how changes you make in Arlo reach your website, which is why it needs to run regularly.
How an import works
The plugin asks your Arlo platform for a snapshot of your published data. When the snapshot is ready, Arlo calls back to your site, and the plugin downloads the encrypted files and processes them.
The callback
Arlo must be able to reach your site at this address:
https://YOUR_SITE/wp-admin/admin-ajax.php?action=arlo_import_callback
Blocked callbacks are the most common cause of failed imports
Arlo sends the callback as an anonymous POST from Arlo's servers, like a webhook. Network firewalls, hosting gateways, web server rules and WordPress security plugins often block that kind of request. If an import stalls, start with Fixing blocked callbacks.
By default Arlo calls your site's own address, and the Import callback host setting is normally left blank, in development and in production. Set it only if your network, such as a firewall, gateway or load balancer, needs the internet-facing domain name to be given explicitly. Your network or IT administrator can tell you if it is. For a site running on your own machine, see Importing to a local development site.
The plugin waits up to 5 minutes for the callback. If it does not arrive, the import fails and is tried again later. A callback that arrives after that is ignored and recorded in the log.
Large platforms
If you have a large platform, an import can take longer or hit server limits. The Import fragment size and Wait between import tasks settings on the Misc tab adjust how much work is done at once.
Running in the background
An import is split into small steps that each run in their own short request, so you can keep working on your site, leave the Arlo settings page or reload it while an import runs. Most imports take a few minutes, depending on how much data your platform holds.
- The steps are started by requests that your server makes to itself, so those requests must not be blocked.
- A WordPress cron event every 5 minutes restarts an import that has stopped moving.
- An import that makes no progress for 28 minutes, or runs for more than 45 minutes, is stopped and tried again later.
- The plugin tries to clear your page cache when an import finishes. If you use a caching plugin or CDN and old data persists, clear it yourself.
Running an import manually
- Go to Arlo > Settings and open the General tab.
- In the Status row, choose Synchronize now. Other states offer Retry, Reconnect or Re-enable auto-sync in the same place.
The Status row only appears once you have saved your platform name. Save any changes first, because the link reloads the page and discards unsaved edits. Saving a different platform name starts an import by itself.
A notice at the top of the admin shows the progress of a running import. You can see each import's history under Arlo > Logs.
Scheduled imports
The plugin schedules a WordPress cron check every 30 minutes. Whether a check starts an import depends on the Deployment setting:
| Deployment | When an import starts |
|---|---|
| Production | On each check, if the last import finished more than 10 minutes ago. |
| Non-production | Once a day, or once a week for the demo platform. |
- Untick Automatic synchronization enabled to stop scheduled imports and update only manually.
- If the platform cannot be reached repeatedly, scheduled imports pause and the Status shows Disconnected until you choose Reconnect. See connection healthchecks.
- After a failed import, the next attempts wait longer each time.
WordPress cron only runs when someone visits your site. On a quiet site, imports can fall behind, so set up a real cron job as below.
Setting up a cron job
We strongly recommend a real server cron job (or an equivalent scheduler from your host) that calls WordPress cron every 5 minutes. It makes sure imports start on time whether or not anyone visits your site.
An example crontab entry:
*/5 * * * * wget -q -O - 'https://YOUR_WP_DOMAIN/wp-cron.php?doing_wp_cron' >/dev/null 2>&1
If you use WP-CLI, wp cron event run --due-now does the same. When a real cron job calls WordPress cron, you can also set define( 'DISABLE_WP_CRON', true ); in wp-config.php so that visitors' page loads no longer trigger it.
If you network-activate the plugin, or activate it on more than one site in a WordPress multisite network, we recommend disabling WordPress's default cron and running WordPress cron from a real system cron job on a fixed schedule for each Arlo-enabled site. WordPress's default cron runs in response to site traffic, so on a busy network normal traffic and each site's own sync schedule can end up interacting in ways a real cron job avoids.
WordPress cron must not be disabled without a replacement
If DISABLE_WP_CRON is set and nothing else calls wp-cron.php, scheduled imports never run.
Logs
The plugin keeps a log of imports and problems on your own site, under Arlo > Logs. Use Download log on the Misc tab to save it as a CSV, for example for Arlo support. Log diagnostic level and Log retention control how much is recorded and for how long.
Logs stay on your site. The plugin no longer has an option to send them to Arlo.
Fixing blocked callbacks
The callback must pass through every layer between Arlo and your WordPress site. A block at any one of them stops the import, and the plugin cannot tell you which one it was.
Signs that the callback is blocked
- An import never gets past its first step, or fails after the 5 minute wait for the callback, and is retried.
- The log shows the import failing while it waits for the callback.
- Your web server or firewall logs show no
POSTto the callback address from Arlo, or show one answered with an error such as403,406or429, or with a challenge page. - It worked before and then stopped, often after several manual syncs in a short time. Security tools can treat repeated requests as an attack and block Arlo's addresses.
What to allow
| Allow | Details |
|---|---|
| Arlo's IP addresses | Arlo calls from a fixed set of addresses that depends on your platform region. Arlo Support keeps the current list under Blacklisted IP addresses in WordPress Plugin troubleshooting and FAQs. |
| The method | POST, with no login. Many tools block anonymous POST requests to admin-ajax.php by default. |
| The address | /wp-admin/admin-ajax.php?action=arlo_import_callback on your site, over HTTPS. |
| No extra checks | No password prompt (such as HTTP basic authentication), CAPTCHA, browser or bot challenge, or maintenance page in front of it. |
Allow the addresses and the path in each layer and leave the protection switched on for everything else. Turning a firewall off to test is not needed and not recommended.
Where the block can be
Work from the outside in, because the earlier a request is blocked, the less of your site ever sees it.
Your own network
If your site is hosted on a network you manage, check the firewall, gateway, reverse proxy and load balancer (such as an AWS Application Load Balancer or a web application firewall) in front of the web server.
- Allow inbound HTTPS from Arlo's IP addresses to the web server.
- Check geo-blocking, rate limiting and bot protection rules, which can catch Arlo's requests.
- If a gateway needs the public domain name specified, set the Import callback host.
Your hosting provider
Many hosts run their own firewall, web application firewall or gateway in front of your site, with rules you cannot see or change. If you cannot find the cause on your site, ask your host's support to check it, and give them the details in the table above. Ask them to allow Arlo's IP addresses and the POST to the callback address, and to tell you if requests from Arlo are being blocked or rate limited.
The web server
Apache and Nginx rules can block the request before WordPress runs. Look for ModSecurity or similar rule sets, .htaccess or server configuration rules that restrict admin-ajax.php or POST requests, rate limiting, and password protection on the site or the wp-admin folder. The server's access and error logs show whether the POST arrived and how it was answered.
WordPress and its plugins
- Security plugins, such as Wordfence or Solid Security, can block Arlo's IP addresses or anonymous requests to
admin-ajax.php. Look in their block lists and firewall rules, remove any block on Arlo's addresses, and add the addresses to the plugin's allow list. Follow that plugin's own documentation. - IP blocker, login protection and hide-
wp-adminplugins can also stop the request. - Maintenance mode and coming-soon plugins can answer the callback with a page instead of letting it through.
- To find a conflicting plugin, deactivate your other plugins and try Synchronize now. Arlo Support's troubleshooting article also covers known conflicts with other plugins.
After you make a change
Choose Synchronize now once and wait for the result. Repeated attempts while a block is still in place can trigger more blocking. If it still fails, contact Arlo Support and send the log from Download log, together with what you checked at each layer.
Troubleshooting
For an import that stops or fails, see Fixing blocked callbacks first.
Events are missing after an import
- Check the website display options on the course template and the course in Arlo. They must be turned on for an event to be published, including the option to promote it in lists and search.
- If you changed something in Arlo recently, wait for the next import or run Synchronize now.
- If you use a caching plugin or CDN, clear it. Cached pages keep showing the old content.
Importing to a local development site
Arlo cannot call back to a site that only runs on your own machine, such as localhost. To import into a local development site, use a tunnel tool that gives it a temporary public address, and enter that address as the Import callback host. Production sites normally leave that setting blank.
Enter the tunnel's host name. The plugin takes only the host and port from the setting and keeps your site's own scheme, so a site running on http://localhost still sends an http:// callback address to the tunnel host, even if you type https://. If your tunnel refuses plain HTTP, serve the local site over HTTPS as well.
Microsoft dev tunnels
Dev tunnels (devtunnels.ms) are aimed at developers and sign in with a GitHub or Microsoft account. They are a public preview service, so check Microsoft's documentation for the current commands.
- Install the
devtunnelcommand line tool. - Sign in with GitHub.
- Host a tunnel to your local site's port, allowing anonymous access because Arlo cannot sign in.
- Copy the host name it prints into the Import callback host setting and save.
- Choose Synchronize now, and wait for the import to finish.
devtunnel user login -g devtunnel host -p 8080 --allow-anonymous
Use your local site's port in place of 8080, and add --protocol https if the site uses HTTPS. The host name looks like abc123-8080.usw2.devtunnels.ms. Visual Studio Code's Ports view can also forward a port through dev tunnels, with its visibility set to Public.
Cloudflare Quick Tunnels
Other free tunnel tools work the same way, as long as they give your site a public address that Arlo can reach without signing in. Cloudflare's Quick Tunnels need no account:
cloudflared tunnel --url http://localhost:8080
Use the temporary trycloudflare.com host name it prints. The name changes each time you start the tunnel, and Cloudflare provides it for testing and development.
Stop the tunnel when the import is done
Anyone who knows the tunnel's address can reach your local site while it is running. Stop the tunnel afterwards and clear the Import callback host setting. The plugin only replaces the host and port in the callback address, so the address still uses your site's own scheme and path.