Inverity

Inverity for HubSpot

Bulk-optimize image folders, browse files in-context, and ship smaller variants without leaving HubSpot.

What this integration does

Inverity for HubSpot is an in-portal Settings extension that turns your HubSpot Files manager into an optimization surface. From the Inverity tab inside HubSpot Settings, you can browse folders, click "Optimize…" on any folder, and watch every supported image inside get smaller — with per-file failure isolation, live progress, and exact savings totals.

The integration runs Inverity's full classical-then-neural pipeline behind the scenes (JPEG-XL effort=7 lossless plus Pareto-improvement neural codecs on Pro and Enterprise tiers). Every variant clears PSNR + SSIM quality thresholds before any output reaches your CMS.

Folder browser

Open any HubSpot Files folder from the in-portal Settings page. Live file counts, recursive walking, no separate dashboard.

Bulk folder optimize

Select a profile, replace mode, and recursive toggle. Inverity walks every supported image in the folder and ships smaller variants — with per-file failure isolation.

Per-asset optimize

Optimize individual assets via the Inverity console or HubSpot workflow trigger. Same pipeline, single-file scope.

Live progress

Walked, optimized, skipped, failed, savings — all surfaced in real time while the job runs.

Install

Install Inverity from the HubSpot App Marketplace listing, or via the developer-portal install link if you're on a private install.

After install:

1. HubSpot redirects to Inverity to complete the OAuth handshake. 2. Inverity provisions a tenant scoped to your portal ID. 3. The Inverity Settings tab becomes available inside HubSpot Settings → Connected Apps → Inverity.

Reinstalling on the same portal preserves your previous tenant — jobs, audit history, and billing continue uninterrupted.

How bulk-folder-optimize works

Open Settings → Connected Apps → Inverity inside HubSpot. The Settings tab renders a folder browser populated from your HubSpot Files account, with live file counts.

Click "Optimize…" on any folder. A modal appears with three controls: profile picker (8 options — see Profiles below), replace mode (parallel or replace), and recursive toggle. Click "Start optimization."

The job appears in the "Active & recent jobs" panel below the folder browser, polling every 2 seconds for progress. When complete, the panel shows: walked, optimized, skipped, failed, and bytes saved. Per-file outcomes are listed for any failures.

In parallel mode, optimized variants land alongside originals as "name.optimized.<ext>" siblings. In replace mode, the original file ID is preserved — only the bytes are swapped — so any existing references in your HubSpot content keep working.

Replace vs Parallel mode

Parallel mode

Writes a sibling file named "name.optimized.<ext>" alongside the original. Original is untouched. Use when you need to A/B test the optimized variant or ship gradually.

Replace mode

Overwrites the original in HubSpot with the optimized variant. Original bytes are retained server-side for 30 days; rollback is one click. Use when you want immediate impact across delivered assets.

Optimization profiles

Inverity ships eight optimization profiles, ranging from the strictest visually-lossless tuning to web-aggressive compression for high-traffic surfaces. Pick the one that matches your asset class — or rely on per-folder rules to apply different profiles by path.

Visually Lossless

SSIM ≥ 0.995. Conservative format conversion, safe skip logic. Best for brand-sensitive assets and first-pass rollouts.

Website Balanced

SSIM ≥ 0.985. Balanced web delivery — strong visual quality with moderate savings. The default for general web surfaces.

Website Aggressive

SSIM ≥ 0.975. Pushes harder on byte savings while still protecting obvious quality regressions. For high-traffic surfaces where page weight matters most.

Blog / Content

SSIM ≥ 0.988. Editorial images, article embeds, and content marketing assets. Tuned to keep text-adjacent imagery sharp.

Email Safe

SSIM ≥ 0.99. Stays within email-client-safe formats (no AVIF, no JPEG-XL). Conservative compression that survives every major client.

Social

SSIM ≥ 0.985. Strong visual quality for social distribution and mobile viewing.

Transparent Graphics

Preserves alpha channel and clean edges for logos, UI graphics, and overlays. Avoids JPEG output on transparent sources.

Archive Safe

Very conservative optimization intended for long-lived source-of-record assets. Pareto-safe: never larger than the strongest classical baseline.

Quality safety

Inverity is built on the assumption that visual regressions are unacceptable. Every optimization passes through the same set of guardrails before any byte reaches your HubSpot folder.

Per-image quality gates

Every variant is checked against PSNR (signal fidelity) and SSIM (structural similarity) thresholds before delivery. Outputs that miss the floor never reach your CMS.

Pareto-safe routing

Neural codecs only deploy when they beat the strongest classical baseline. If classical wins on bytes, classical ships — never larger by accident.

30-day original retention

Replace-mode optimizations keep the original bytes retrievable for 30 days. One-click rollback per asset, audit-logged on every action.

Per-file failure isolation

A single corrupt or unsupported file in a folder won't kill the whole job. Failed files are reported with reason; the rest of the folder still optimizes.

Permissions Inverity requests

Inverity requests two HubSpot OAuth scopes during install: oauth (required by HubSpot for any integration) and files (required to read folder contents and write optimized variants).

Inverity does not request access to your CRM, contacts, deals, marketing emails, or any non-file data. The integration is scoped to file manager operations only.

You can revoke access at any time from HubSpot Settings → Connected Apps → Inverity → Disconnect, or from your Inverity dashboard. Disconnecting halts in-flight jobs and clears stored OAuth credentials.

What this integration does NOT do (yet)

In the spirit of honest documentation: Inverity does not currently auto-process images on upload. Optimization fires only on explicit user action — bulk-folder-optimize, per-asset optimize, or HubSpot workflow trigger. Watching HubSpot for new uploads requires webhook subscriptions that aren't in this version of the integration.

Inverity also does not deduplicate previously-optimized files when re-running bulk-optimize on the same folder. If you run "Optimize folder" twice in parallel mode, the second run produces "name.optimized.optimized.<ext>" siblings; in replace mode, the second run re-optimizes already-optimized bytes (quality gates may flag this as no-savings and skip, but compute is still spent). Plan your runs deliberately, or use folder rules to scope re-runs.

Both gaps are on the roadmap and will land in a future release. They're documented here so the integration's actual behavior is never a surprise.

Troubleshooting

"Optimization failed" on a single file

Most common causes: unsupported format (we cover JPEG, PNG, WebP, AVIF, JPEG-XL on input); corrupt file; file too large for the source profile. The job continues on every other file in the folder.

Job appears stuck

Refresh the Settings page. Active jobs poll every 2 seconds; long folders (1000+ files) can take several minutes. If a job stays in "running" state for over 10 minutes with no progress, contact support@inverity.ai with the job ID.

Optimization completed but file size barely changed

Some assets are already near-optimal — JPEG-XL effort=7 lossless on a JPEG that was already well-compressed has limited room. The "skipped" counter tracks files where Inverity found no improvement worth shipping.

Files are missing from the folder browser

The browser only shows supported image formats. SVG files, videos, documents, and unsupported formats are filtered out client-side.

Need help with the HubSpot integration?

Email support@inverity.ai with your portal ID and the job ID (if applicable) for fast triage. We respond within one business day.