diff --git a/3p/vendors/incrementx.js b/3p/vendors/incrementx.js
new file mode 100644
index 000000000000..d9a7fde3a56e
--- /dev/null
+++ b/3p/vendors/incrementx.js
@@ -0,0 +1,12 @@
+// src/polyfills.js must be the first import.
+import '#3p/polyfills';
+
+import {register} from '#3p/3p';
+import {draw3p, init} from '#3p/integration-lib';
+
+import {incrementx} from '#ads/vendors/incrementx';
+
+init(window);
+register('incrementx', incrementx);
+
+window.draw3p = draw3p;
diff --git a/ads/_config.js b/ads/_config.js
index d35746017295..8fb7d16ef890 100755
--- a/ads/_config.js
+++ b/ads/_config.js
@@ -652,6 +652,11 @@ const adConfig = jsonConfiguration({
},
'improvedigital': {},
+ 'incrementx': {
+ prefetch: 'https://cdn.incrementxserv.com/ixamp.js',
+ renderStartImplemented: true,
+ },
+
'industrybrains': {
prefetch: 'https://web.industrybrains.com/js/ads/async/show.js',
preconnect: [
diff --git a/ads/vendors/incrementx.js b/ads/vendors/incrementx.js
new file mode 100644
index 000000000000..95f9f15eb705
--- /dev/null
+++ b/ads/vendors/incrementx.js
@@ -0,0 +1,11 @@
+import {validateData, writeScript} from '#3p/3p';
+
+/**
+ * @param {!Window} global
+ * @param {!Object} data
+ */
+export function incrementx(global, data) {
+ validateData(data, ['vzid']);
+ global.ixParam = data;
+ writeScript(global, 'https://cdn.incrementxserv.com/ixamp.js');
+}
diff --git a/ads/vendors/incrementx.md b/ads/vendors/incrementx.md
new file mode 100644
index 000000000000..882e45c7bc97
--- /dev/null
+++ b/ads/vendors/incrementx.md
@@ -0,0 +1,20 @@
+# incrementx
+
+## Example
+
+```html
+
+
+```
+
+## Configuration
+
+For configuration details and to generate your tags, please contact https://www.incrementx.com/contact-us.
+
+Supported parameters:
+
+- `data-vzid`
diff --git a/examples/amp-ad/ads.amp.esm.html b/examples/amp-ad/ads.amp.esm.html
index 85a51b42665c..71780245c389 100644
--- a/examples/amp-ad/ads.amp.esm.html
+++ b/examples/amp-ad/ads.amp.esm.html
@@ -169,6 +169,7 @@
+
@@ -1335,6 +1336,12 @@
Imedia
data-positions='[{"id":"p1", "zoneId":"seznam.novinky.ikona2"}, {"id":"p2", "zoneId":"seznam.novinky.ikona"}]'>
+ IncrementX
+
+
+
Index Exchange Header Tag
imedia
+
@@ -1192,6 +1193,10 @@ Imedia
data-positions='[{"id":"p1", "zoneId":"seznam.novinky.ikona2"}, {"id":"p2", "zoneId":"seznam.novinky.ikona"}]'>
+ IncrementX
+
+
+
Index Exchange Header Tag
diff --git a/extensions/amp-ad/amp-ad.md b/extensions/amp-ad/amp-ad.md
index 447de1ad0a6e..94ab17ab3ebc 100644
--- a/extensions/amp-ad/amp-ad.md
+++ b/extensions/amp-ad/amp-ad.md
@@ -365,6 +365,7 @@ See [amp-ad rules](validator-amp-ad.protoascii) in the AMP validator specificati
- [Imonomy](../../ads/vendors/imonomy.md)
- [Imedia](../../ads/vendors/imedia.md)
- [Improve Digital](../../ads/vendors/improvedigital.md)
+- [IncrementX](../../ads/vendors/incrementx.md)
- [Insticator](../../ads/vendors/insticator.md)
- [InsurAds](../../ads/vendors/insurads.md)
- [Index Exchange](../../ads/vendors/ix.md)
diff --git a/validator/testdata/feature_tests/ads.html b/validator/testdata/feature_tests/ads.html
index 64c83d9a53f3..a4321a2bff1d 100644
--- a/validator/testdata/feature_tests/ads.html
+++ b/validator/testdata/feature_tests/ads.html
@@ -124,6 +124,7 @@
+
@@ -804,6 +805,10 @@ Imedia
data-positions='[{"id":"p1", "zoneId":"seznam.novinky.ikona2"}, {"id":"p2", "zoneId":"seznam.novinky.ikona"}]'>
+ IncrementX
+
+
+
Industrybrains