Documentation
Everything you need to set up and run a site with Velvet. Can’t find something? Write to us and we’ll add it here.
Installing Velvet
Your download has three files. Install all three, in this order:
- velvet-core.zip (the plugin): Plugins → Add New → Upload Plugin → Activate. Profiles, accounts, verification, search and payments live here.
- velvet.zip (the base theme): Appearance → Themes → Add New → Upload Theme. Install it, but don’t activate it. Velvet Classic is built on top of it.
- velvet-classic.zip (the design): Appearance → Themes → Add New → Upload Theme → Activate.
Then:
- Settings → Permalinks: choose “Post name” and save.
- Velvet → Settings: labels, moderation, ID checks, and site mode (directory or agency). “Create demo content” fills the site so you can see it working; delete it before launch.
- Appearance → Customize → Velvet theme: colour scheme, top bar message, featured slider and footer notice.
Keep the Velvet base theme installed and updated. Updates to it apply to Velvet Classic automatically.
Requirements
WordPress 7.1.4, released 28 October 2026, and PHP 8.5.12, released 21 October 2026. Versions last checked: 10 November 2026. The GD image library, which almost every host has, is needed for photo compression and watermarks.
Feature switches
Velvet → Settings → Features: one on/off switch per feature (safety, photos, profile page, earning). Always on: date-of-birth check, under-18 ages refused, under-18 reports hide a profile.
Site modes (Velvet → Settings → Site mode)
Directory (default): independents and agencies sign up and publish their own ads.
Agency: the site works as one agency.
– Advertiser sign-up closes and all publishing forms are blocked on the server, including forms already open in someone’s browser.
– Admins create and edit profiles in the front-end editor (My account → Escorts), with photos and tours, and set each one Live or Hidden.
– Contact buttons on every profile use your booking phone, WhatsApp and email (set in the same section). The WhatsApp message is pre-filled with the profile name.
– Agency pages, “Advertise” buttons and personal contact fields are removed. Member accounts for reviews are optional.
– Consent record (on by default): a profile can’t be published, from any screen, until an admin confirms the person is 18+ and consented, with records on file.
– Switching modes doesn’t delete anything; existing profiles stay as they are.
How publishing works
A profile goes live only when: email confirmed, ID approved (if required), and either moderation is set to automatic or an admin approves it in Velvet → Moderation.
Admin approval always publishes.
Ready-made categories
24 popular categories in 4 groups (dates and companionship, where, who is welcome, style), each with a description and a page introduction. Installed on activation; add more under Velvet → Categories; rename or remove under Escorts → Services.
Home page sections (Velvet Classic)
Appearance → Customize → Home page sections: city buttons, trust strip, Available today, category tiles, Visiting soon (tours in the next 7 days), New this week, Top rated, Recently viewed (stored only in the visitor’s browser), starting prices in “Advertise here”, and a text block for search engines (ready-made text if left empty). Each has its own switch and hides itself when empty.
Photos
Velvet → Settings → Photos:
– Privacy tools: advertisers blur, pixelate or black out faces, tattoos and other details in the uploader.
The edit happens in the browser; only the edited photo is uploaded.
– Every upload is resized (default 1920 px longest side), compressed (quality 82) and saved as WebP when the server supports it, otherwise JPEG.
All EXIF data, including GPS location, is removed. Only the image sizes the theme uses are generated.
– Watermark: text or a PNG logo (Media ID), bottom right / bottom left / centre / tiled, with opacity and size.
– “Space saved so far” shows how much storage compression has saved.
Settings apply to new uploads. Everything runs on your own server; photos are never sent to an outside service.
Verified photos and fake photo checks
- Advertisers get a personal code and a gesture (changes every 2 days) and upload a selfie holding the code: Dashboard → Verification.
- Velvet → Verifications shows the selfie, the code to look for and the profile photos side by side, with Google and TinEye search links. Approve gives the “Verified photos” badge with the date it was checked.
- Every advertiser photo gets a fingerprint. Velvet → Settings → Photos → Copied photos: refuse, list for review, or don’t check.
- Re-check after new photos (on by default): the badge pauses when a verified advertiser adds photos. Velvet → Verifications → Photo checks.
- Photos uploaded before the update are fingerprinted automatically in the background.
Profile page extras
- Slide to reveal (Settings → Profile page): phone numbers and contact links are not in the page until a visitor slides the handle. Keyboard works too (arrow keys / End). Limited to 40 reveals per visitor per hour.
- Social and fan-site links: website, OnlyFans, Fansly, Instagram, TikTok, X, Snapchat and a link-in-bio, marked nofollow.
- Profile stats: advertisers see views, “number shown” and saves for the last 7 days on their Overview.
- Quick exit: a button bottom-left, or Esc twice, replaces the page with Google.
Promotions and credits
- Advertisers top up credits (you add them under Velvet → Credits after receiving a payment; Velvet Pay will do it automatically).
- Dashboard → Promote: bump to the top, daily bump for 7 days, Premium, Featured in their city, Featured everywhere; members buy VIP.
- Prices: Velvet → Settings → Promotions and credits (0 = not for sale). Lists sort by the latest publish or bump.
- “Available today” (free): 12-hour badge, search filter, email to people who saved the profile.
- Favourites: anyone signed in can save profiles; optional email when a favourite is available today or adds a tour.
- Velvet → Income: money paid in this month and last month, what sold, running promotions, new advertisers, what ends in the next 7 days, banners.
Banner ads
Velvet → Banners → Add banner: image (featured image), link, slot (header, sidebar, between listings), dates, who it’s sold to and the price.
Place the “Velvet banner” widget in any widget area, or use [velvet_banner slot=”sidebar”]. Views and clicks are counted (bots ignored).
Security
- Two-step sign-in with an authenticator app (QR code, 8 backup codes). Required for admins before opening Velvet’s moderation, verification and settings pages (setting). Advertisers and members turn it on from Account.
Locked out? Remove it with WP-CLI: wp user meta delete_vc_2fa_on - Blocked IPs (single or ranges like 198.51.100.0/24): no access to the site. Admins are never blocked.
- Blocked countries: sign-ups only, or the whole site. Needs Cloudflare or GeoIP on the server to know the visitor’s country.
Safety
- 18+ gate, date-of-birth check at signup, age >= 18 enforced on profiles
- ID images kept in a private folder, only viewable by admins, deleted after review
- “Under 18” and “coerced” reports hide the profile instantly until reviewed
- Blacklist for emails/phones, rate limits, honeypots, audit log
- Self-service data export and account deletion; WordPress privacy tools integration
Customising templates
Copy any file from velvet-core/templates/ into your theme at velvet-core/<name>.php to override it.
Legal questions
Check local law before running an adult directory. In Canada, Criminal Code s. 286.4 restricts advertising sexual services; the US has FOSTA-SESTA. Get legal advice for your hosting location and operator.