First, choose a Productized Service type. Then, add Service items. For example, items for a branding service could be “logo design” and “letterhead design”.
Each item has special properties that you can set, like: add-on, quantity or custom.
Don’t waste time on the dull part of your business. Zendo can autogenerate a Quote upon order, send an automatic Payment Request, and issue an Invoice once the payment has been processed.
Each Service can have a unique, fully customizable Order Form that allows you to streamline data collection. Each form has its unique URL so you can link it to a button on your website. You can add an unlimited number of custom input fields.
Zendo comes with a frictionless payment collection system. It supports instant payments (powered by Stripe) and bank transfers, regardless of the Service type. After collecting your payment, it’s up to you to deliver a great service!
Define the default payment method per service basis or adjust it per client needs.
(function() {
// Global page view and session tracking for UAEL Modal Popup feature
try {
// Session tracking: increment if this is a new session
// Check if any popup on this page uses current page tracking
var hasCurrentPageTracking = false;
var currentPagePopups = [];
// Check all modal popups on this page for current page tracking
if (typeof jQuery !== 'undefined') {
jQuery('.uael-modal-parent-wrapper').each(function() {
var scope = jQuery(this).data('page-views-scope');
var enabled = jQuery(this).data('page-views-enabled');
var popupId = jQuery(this).attr('id').replace('-overlay', '');
if (enabled === 'yes' && scope === 'current') {
hasCurrentPageTracking = true;
currentPagePopups.push(popupId);
}
});
}
// Global tracking: ALWAYS increment if ANY popup on the site uses global tracking
// Current page tracking: increment per-page counters
if (hasCurrentPageTracking && currentPagePopups.length > 0) {
var currentUrl = window.location.href;
var urlKey = 'uael_page_views_' + btoa(currentUrl).replace(/[^a-zA-Z0-9]/g, '').substring(0, 50);
var currentPageViews = parseInt(localStorage.getItem(urlKey) || '0');
currentPageViews++;
localStorage.setItem(urlKey, currentPageViews.toString());
// Store URL mapping for each popup
for (var i = 0; i < currentPagePopups.length; i++) {
var popupUrlKey = 'uael_popup_' + currentPagePopups[i] + '_url_key';
localStorage.setItem(popupUrlKey, urlKey);
}
}
} catch (e) {
// Silently fail if localStorage is not available
}
})();