PHPackages                             pantheon-systems/pantheon-wordpress-edge-integrations - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. pantheon-systems/pantheon-wordpress-edge-integrations

AbandonedArchivedWordpress-plugin[Utility &amp; Helpers](/categories/utility)

pantheon-systems/pantheon-wordpress-edge-integrations
=====================================================

WordPress plugin to support Pantheon Edge Integrations and personalization features

0.3.0(3y ago)12.7k1[3 issues](https://github.com/pantheon-systems/pantheon-wordpress-edge-integrations/issues)2MITPHP

Since Feb 14Pushed 1y ago1 watchersCompare

[ Source](https://github.com/pantheon-systems/pantheon-wordpress-edge-integrations)[ Packagist](https://packagist.org/packages/pantheon-systems/pantheon-wordpress-edge-integrations)[ RSS](/packages/pantheon-systems-pantheon-wordpress-edge-integrations/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (10)Dependencies (7)Versions (24)Used By (2)

Pantheon WordPress Edge Integrations
====================================

[](#pantheon-wordpress-edge-integrations)

Stable tag: 0.3.0
Requires at least: 5.8
Tested up to: 5.9
Requires PHP: 7.4
License: MIT
Tags: pantheon, personalization, edge integrations, geolocation, geoip, interest tracking, vcl, developer Contributors: jazzs3quence, jspellman, getpantheon

WordPress plugin and developer toolkit to support Pantheon Edge Integrations and personalization features.

Archived project
----------------

[](#archived-project)

This project is **archived** as of August 2024 as it no longer receives active development. The architecture provided by the tools in this SDK and the related projects are still valid and will continue to work on Pantheon AGCDN. However, we will not be responding to issues or pull requests or building these tools out more than they are already.

[![Unsupported](https://camo.githubusercontent.com/628b81b854d88f0f44cf81e33f54ab504377a35db3986497241f6d5d75c01a2b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f70616e7468656f6e2d646570726563617465642d79656c6c6f773f6c6f676f3d70616e7468656f6e26636f6c6f723d464644433238)](https://docs.pantheon.io/oss-support-levels#deprecated) [![Pantheon WordPress Edge Integrations](https://github.com/pantheon-systems/pantheon-wordpress-edge-integrations/actions/workflows/test.yml/badge.svg)](https://github.com/pantheon-systems/pantheon-wordpress-edge-integrations/actions/workflows/test.yml/badge.svg) [![Packagist release](https://camo.githubusercontent.com/884195f27baa9790446a044339c293ad68f5a3ef295d041aa75bca18d9658c71/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f70616e7468656f6e2d73797374656d732f70616e7468656f6e2d776f726470726573732d656467652d696e746567726174696f6e732e737667)](https://github.com/pantheon-systems/pantheon-wordpress-edge-integrations/releases/) [![Commits since latest release](https://camo.githubusercontent.com/bbfdb641c98cbccb32fc200d6229d917e44d17e6a87947eb69c2717d89bedd11/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d6974732d73696e63652f70616e7468656f6e2d73797374656d732f70616e7468656f6e2d776f726470726573732d656467652d696e746567726174696f6e732f6c6174657374)](https://camo.githubusercontent.com/bbfdb641c98cbccb32fc200d6229d917e44d17e6a87947eb69c2717d89bedd11/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d6974732d73696e63652f70616e7468656f6e2d73797374656d732f70616e7468656f6e2d776f726470726573732d656467652d696e746567726174696f6e732f6c6174657374)

Description
-----------

[](#description)

This plugin provides tools for integrating with Pantheon's Edge features provided by our Advanced Global CDN. Integrate natively with geolocation and interest tracking features to build personalization-enhanced features for your site.

If you would like to contribute to this plugin, please see the [CONTRIBUTING.md](https://github.com/pantheon-systems/pantheon-wordpress-edge-integrations/blob/main/CONTRIBUTING.md) file for more information.

Frequently Asked Questions
--------------------------

[](#frequently-asked-questions)

### How do I check if vary headers are being sent from the CDN?

[](#how-do-i-check-if-vary-headers-are-being-sent-from-the-cdn)

There are two ways to check for the vary headers sent by the CDN to ensure that your site is able to personalize based on that information.

#### Browser developer tools

[](#browser-developer-tools)

In the browser Inspector (Right Click → Inspect in Firefox/Chrome), go to the Network tab. You may need to reload the page. The first element in the list should show the URL of the site. Click that item and ensure that the Headers tab is selected in the right panel. In the **Response Headers** section, there are three things you can be looking for depending on your AGCDN Varnish configuration: `audience`, `audience-set` and `interest`. `interest` will only show up if an interest is set in the browser (and enabled in VCL), but `audience`, `audience-set` or both should appear if Geolocation has been configured for your site. If either of those are showing in the response headers, the CDN is sending the data to your browser and personalization is configured correctly.

#### Using cURL

[](#using-curl)

You can also make a `curl` request against the URL of your site to see the headers.

```
$ curl --head ${your-domain}
```

Running a `curl` request in a terminal application like the above will output the response headers of the requested URL. If the headers are being sent by the CDN, you should see entries in the returned response head data like the following:

```
HTTP/2 200
cache-control: public, max-age=600
content-type: text/html; charset=UTF-8
link: ; rel="https://api.w.org/"
link: ; rel="alternate"; type="application/json"
link: ; rel=shortlink
server: nginx
strict-transport-security: max-age=300
traceparent: 00-d9c96d620d6840908df7fcc1c87355e2-3c672567583b6ecf-00
x-cloud-trace-context: d9c96d620d6840908df7fcc1c87355e2/4352488690669022927;o=0
x-pantheon-styx-hostname: styx-fe4-a-c8f79d547-q9h4q
x-pingback: https://your-domain.com/xmlrpc.php
x-styx-req-id: 83e9fe48-b052-11ec-aac2-b6d4b691b347
age: 19
accept-ranges: bytes
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
date: Wed, 30 Mar 2022 17:55:18 GMT
x-served-by: cache-mdw17372-MDW, cache-sjc10033-SJC, cache-sjc10027-SJC
x-cache: MISS, HIT, MISS
x-cache-hits: 0, 6, 0
x-timer: S1648662918.165521,VS0,VE3
vary: Accept-Encoding, Audience-Set, Interest, Cookie, Cookie
audience: geo:US
audience-set: country:US|city:salt lake city|region:UT|continent:NA|conn-speed:broadband|conn-type:wired
content-length: 58566

```

Again, you are looking for `audience` or `audience-set` headers to be returned, which are visible at the bottom of the request in the example above.

Interest headers will only be sent back from the CDN if a cookie with the interest defined exists, however, you can test this with `curl` as well by passing a `--cookie` value:

```
$ curl --head --cookie "interest=through-the-looking-glass" ${your-domain}
```

This will return a response like this:

```
HTTP/2 200
cache-control: public, max-age=600
content-type: text/html; charset=UTF-8
link: ; rel="https://api.w.org/"
link: ; rel="alternate"; type="application/json"
link: ; rel=shortlink
server: nginx
strict-transport-security: max-age=300
traceparent: 00-79357addac994f0da9fada52ede5174e-de0cbffa799c0e62-00
x-cloud-trace-context: 79357addac994f0da9fada52ede5174e/16000374658643529314;o=0
x-pantheon-styx-hostname: styx-fe4-b-97f8fd4b8-2h5j7
x-styx-req-id: b16a334c-b052-11ec-90c9-c2ea4801bb9c
age: 0
accept-ranges: bytes
via: 1.1 varnish, 1.1 varnish, 1.1 varnish
fastly-original-body-size: 0
date: Wed, 30 Mar 2022 17:56:15 GMT
x-served-by: cache-mdw17362-MDW, cache-sjc10051-SJC, cache-sjc10024-SJC
x-cache: MISS, MISS, MISS
x-cache-hits: 0, 0, 0
x-timer: S1648662975.164371,VS0,VE226
vary: Accept-Encoding, Audience-Set, Interest, Cookie, Cookie
audience: geo:US
audience-set: country:US|city:salt lake city|region:UT|continent:NA|conn-speed:broadband|conn-type:wired
interest: through-the-looking-glass
content-length: 57183

```

In the example output above, you can see the `interest` key is returned with a value of `through-the-looking-glass` which matches what was sent in the cookie via the `curl` request.

### How do I validate that my vary headers are being sent to the CDN to vary content on interest/geolocation?

[](#how-do-i-validate-that-my-vary-headers-are-being-sent-to-the-cdn-to-vary-content-on-interestgeolocation)

Like the above, validating that the vary headers are being sent correctly can be done either in the browser tools, or via `curl`.

#### Browser developer tools

[](#browser-developer-tools-1)

Using the browser Inspector → Network tab again, repeat the process [as above](#how-do-i-check-if-vary-headers-are-being-sent-from-the-cdn). This time, you will be looking for the `vary` key. This tells us what the CDN has been told we should vary content on. If the Vary headers are being sent properly from the plugin, you should see something like:

```
vary: Accept-Encoding, Audience-Set, Interest, Cookie, Cookie

```

This represents the default vary headers that are set by the WordPress Edge Integrations plugin. There could be any number of combinations of `Audience-Set`, `Audience`, `Interest` or other vary headers that you have set yourself in the code.

#### Using cURL

[](#using-curl-1)

You can get the same information using cURL as above, as well. When reading a `curl --head ${your-domain}` request to look for Vary headers, you'll want to look for the `vary` key in the response. Again, it will output something similar to:

```
vary: Accept-Encoding, Audience-Set, Interest, Cookie, Cookie

```

This tells you what Vary headers are currently being sent by the code.

### How can I troubleshoot no Vary headers being sent?

[](#how-can-i-troubleshoot-no-vary-headers-being-sent)

If you are looking at the response headers for your page and no Vary headers are being sent on a page that you'd expect them to (e.g. not a page that includes logic to *not* send Vary headers), the first thing to check is to see what the output of [`get_supported_vary_headers`](https://github.com/pantheon-systems/edge-integrations-wordpress-sdk/blob/main/docs/api.md#get_supported_vary_headers) is. `get_supported_vary_headers` should output an array of *just* the currently-supported Vary headers (contrast this with the [`pantheon.ei.supported_vary_headers`](https://github.com/pantheon-systems/edge-integrations-wordpress-sdk/blob/main/docs/api.md#get_supported_vary_headers) filter, which takes an array of headers and whether they are supported or unsupported). If the output is not what you expect (empty, a multidimensional array, etc.), you know that the problem exists in how the Vary headers are being defined. `get_supported_vary_headers` is run immediately before the [`header`](https://www.php.net/manual/en/function.header.php) function is called, so it's the last place where the Vary headers would be breaking down. It might also be valuable to experiment with the [`pantheon.ei.supported_vary_headers`](https://github.com/pantheon-systems/edge-integrations-wordpress-sdk/blob/main/docs/api.md#get_supported_vary_headers) filter, which is used to filter the output before returning the array of just the Vary header array keys.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance8

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 99% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~7 days

Recently: every ~24 days

Total

20

Last Release

1399d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b34cc6bd882277b6c6dda19bf6631ae5c3a909fd667c826a15121642cdc051b2?d=identicon)[greg.1.anderson](/maintainers/greg.1.anderson)

![](https://www.gravatar.com/avatar/5a89f5f15357797cbd6ec7833a28626478ae3c0ceb5fa1faa8a26d0960584c65?d=identicon)[pantheon-systems](/maintainers/pantheon-systems)

![](https://www.gravatar.com/avatar/af6c0ce1d250a8a8edc57b4759dabc3d5f7956fc105450bba7fc5d2eb5b74362?d=identicon)[jazzsequence](/maintainers/jazzsequence)

---

Top Contributors

[![jazzsequence](https://avatars.githubusercontent.com/u/991511?v=4)](https://github.com/jazzsequence "jazzsequence (300 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (3 commits)")

---

Tags

edge-integrationswordpresswordpress-plugin

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/pantheon-systems-pantheon-wordpress-edge-integrations/health.svg)

```
[![Health](https://phpackages.com/badges/pantheon-systems-pantheon-wordpress-edge-integrations/health.svg)](https://phpackages.com/packages/pantheon-systems-pantheon-wordpress-edge-integrations)
```

###  Alternatives

[mnapoli/fluent-symfony

8036.6k](/packages/mnapoli-fluent-symfony)[phuml/phuml

phUML is a fully automatic UML class diagram generator for PHP code

11411.3k1](/packages/phuml-phuml)[tcb13/substringy

A sub string manipulation library with multibyte support that extends Stringy

1760.6k1](/packages/tcb13-substringy)[illuminatech/nova-config

A Laravel Nova tool for application configuration management.

134.2k](/packages/illuminatech-nova-config)[media24si/upn-generator

UPN form generator

152.3k](/packages/media24si-upn-generator)[whitecube/laravel-prices

Manage acquisition, selling &amp; renting prices for products and services in your Laravel Application

121.6k](/packages/whitecube-laravel-prices)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
