
ReservPro: The solution for your campsite
ReservPro is a platform designed to simplify campsite management: pitches, seasonal guests, reservations, payments, and more. Used throughout Quebec, it has evolved with the needs of the field for over 10 years.
Complete location management
Manage travelers, seasonal workers, platforms, parking or storage - view on a map or interactive grid.
Online reservations and payments
Your customers book and pay online, by phone, or on-site. Manage deposits, time limits, and options with flexibility.
Integrated point of sale
Easily sell products or rentals with the integrated checkout. Track inventory, receipts, taxes, Clover terminals, and more.
Discounts & Rebates
Automatically apply discounts based on time periods, guest types, length of stay or selected options.
Campsite activities
Easily create and manage your activities (free or paid), with registration, place limits and attendance reports.
Communication & customer files
Customizable email templates, comprehensive guest profiles, stay history, purchases, internal notes and more.
What ReservPro can do for you
-
Integrated AI (Aria)Your virtual assistant to simplify your life.
-
Dynamic pricingAdjust your prices according to season, traffic or locations.
-
Automated invoicingGenerate invoices and taxes, export for accounting.
-
Adaptable web interfaceAccess on mobile, tablet or computer — no installation required.
-
Human supportPersonalized support, training, and rapid assistance in French.
-
Detailed customer filesAccess your complete history of stays, purchases, and communications.


Assessment of your needs
'+textreturn+'
We're sorry, an error has occurred. Please try again.'+oldai); } equalizeHeight('egualheight'); $('.feature br, .response_buttons br, .getinfos br, #inscript_ai br, #btnoptions br, .getinfo br, .inscript_firststep br').remove(); $('.feature').next('br').remove(); $('.feature').next('br').remove(); $('.reply').next('br').remove(); } function execute_ai_pub(action='assistant_intro') { if($('.assist_aria').is(':visible')) action = 'assistant_aria'; grecaptcha.ready(function() { grecaptcha.execute('6Le8pCUrAAAAAN8VDkvng6dvQX3xl9HZ5lpPRLG6', {action: 'ubmit'}).then(function(token) { // You can now use this token to send it to your server if($('#question_ai').length) { // Example: Add in a hidden field then submit the form let form = document.getElementById('question_ai'); let input = document.createElement('input'); input.type = 'hidden'; input.id = 'g-recaptcha-response'; input.name = 'g-recaptcha-response'; input.value = token; form.appendChild(input); } if($('#question_ai_chat').length) { // Example: Add in a hidden field then submit the form let form = document.getElementById('question_ai_chat'); let input = document.createElement('input'); input.type = 'hidden'; input.id = 'g-recaptcha-response'; input.name = 'g-recaptcha-response'; input.value = token; form.appendChild(input); } execute_ai_final_pub(action); }); }); } function execute_ai_final_pub(action) { jQuery('.usrresponse').attr('placeholder','Your response...'); timreqfirst = new Date(); var aisess = 'evaluation'; //if(lastcode == '1' && first) { log = []; console.log('reset log'); first=false; } if(loading) { jQuery('.loader--text').html('There is already a loading in progress... Please wait'); } else { if($('#env_courriel').length > 0) { lastcode = 4; $('.assist_contact').removeClass('assist_contact'); } var name = ''; var fields = []; var haveinfo = false; if(action == 'assistant_aria') { var reqinfo = '#question_ai_chat .ariablock:last input, #question_ai_chat .ariablock:last textarea, #question_ai_chat .ariablock:last select'; aisess = 'aide'; rep = jQuery('#usrreponse_chat').val(); } else { rep = jQuery('#usrreponse').val(); jQuery('.user_response').show(); var reqinfo = '#question_ai input, #question_ai textarea, #question_ai select'; } $(reqinfo).each(function() { let id = $(this).attr("id"); let value = $(this).val(); let name = $(this).attr("name"); let type = $(this).attr("type"); // If it is an unchecked checkbox → on skip if (type === "checkbox" && !$(this).is(":checked")) { return true; // continue to the next element } if (!id) return true; if (id == 'Candidate name' && value != '') { name = value; } if(id == 'action' && value == 'evaluation') aisess = 'evaluation'; if (value != '') { fields.push({ id: id, value: value, name: name }); candidate' && id != 'g-recaptcha-response') { haveinfo = true; rep += '
' + id + ' : ' + value; } } }); if($('#employee').length > 0) var employee = $('#employee').val(); else var employee = ''; if(haveinfo && name != '') rep += '
Candidate name: '+name; console.log('aisess ' + aisess); console.log('rep ' + rep); jQuery.ajax({ url: '/en/ajax-pub?action='+action+'', type: 'post', data: { action: 'assistant', employee: employee, ai_sess: aisess, log: JSON.stringify(log), dataType: 'json', rep: rep, lastcode: lastcode, fields: JSON.stringify(fields) }, beforeSend: function() { //if(lastcode > 0) timreq = new Date(); log = log.concat({role:'user', content: rep}); loading=true; jQuery('.regen_ai').hide(); if(action == 'assistant_aria') { setTimeout(function() { jQuery('#question_ai_chat.assist_blocks').
' + rep + '
'); $('.assist_blocks').scrollTop($('.assist_blocks')[0].scrollHeight); }, 220); setTimeout(function() { jQuery('#question_ai_chat .assist_blocks').append('Please wait a few moments while I process your request...
Unable to send your message. '+html+ ' Try again?
');
}
}
}
});
}
}